


实现代码:
java
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
char[][] grid = new char[n][];
for (int i = 0; i < n; i++) {
grid[i] = sc.next().toCharArray();
}
List<Integer> segments = new ArrayList<>();
// 按列找空白段
for (int col = 0; col < m; col++) {
int len = 0;
for (int row = 0; row < n; row++) {
if (grid[row][col] == 'o') {
len++;
} else { // '*'
if (len > 0) {
segments.add(len);
len = 0;
}
}
}
if (len > 0) {
segments.add(len);
}
}
// 段长度从大到小排序
segments.sort((a, b) -> b - a);
int maxScore = 0;
long prefixSum = 0;
for (int p = 0; p < segments.size(); p++) {
prefixSum += segments.get(p);
long totalColored = Math.min(prefixSum, k);
int score = (int)(totalColored - (p + 1)); // p+1 是段数
if (score > maxScore) {
maxScore = score;
}
}
System.out.println(maxScore);
}