小红的矩阵染色

实现代码:

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);
    }
相关推荐
JMchen1234 分钟前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
小糯米60110 分钟前
C++顺序表和vector
开发语言·c++·算法
阔皮大师20 分钟前
INote轻量文本编辑器
java·javascript·python·c#
小法师爱分享23 分钟前
StickyNotes,简单便签超实用
java·python
qq_2975746724 分钟前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
We་ct30 分钟前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript
Lionel68936 分钟前
分步实现 Flutter 鸿蒙轮播图核心功能(搜索框 + 指示灯)
算法·图搜索算法
金牌归来发现妻女流落街头36 分钟前
【从SpringBoot到SpringCloud】
java·spring boot·spring cloud
毅炼36 分钟前
Java 基础常见问题总结(4)
java·后端
小妖66639 分钟前
js 实现快速排序算法
数据结构·算法·排序算法