import java.util.ArrayList; import java.util.List; import java.util.Scanner; /* 思路: 先找出每列中 所有至少连续2个空白被染成红色的数量,保存到数组中 再对每列的数量进行排序,筛选前 k 个 */ // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 char[][] arr = new char[1001][1001]; // 矩阵 while (in.hasNextInt()) { // 注意 while 处理多个 case List<Integer> column = new ArrayList<>(); // 记录所有连续空白(至少2个) 的数量 int n = in.nextInt(), m = in.nextInt(), k = in.nextInt(); for (int i = 0; i < n; i++) { arr[i] = in.next().toCharArray(); } // 按列查找 for (int j = 0; j < m; j++) { int con_white = 0; // 记录连续的空白 for (int i = 0; i < n; i++) { if (arr[i][j] == 'o') { con_white++; if (i == n - 1 && con_white >= 2) { column.add(con_white); } } else { // 遇到黑色,需要添加到column中,并置0 if (con_white >= 2) { column.add(con_white); } con_white = 0; } } } // 按从大到小排序 column.sort((num1, num2) -> num2 - num1); int score = 0, pos = 0; while (k > 0 && pos < column.size()) { if (column.get(pos) <= k) { // k 比较大 score += column.get(pos) - 1; k -= column.get(pos); pos++; } else if (column.get(pos) > k && k >= 2) { score += k - 1; k = 0; } else { k = 0; } } System.out.println(score); } } }