小红的矩阵染色

实现代码:

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);
    }
相关推荐
shehuiyuelaiyuehao17 分钟前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
智购科技自动售货机厂家21 分钟前
2026自动售货机设备清洁效果自动验证:从图像比对到评分算法的工程实践~YH
人工智能·算法·计算机视觉
小刘在重生~33 分钟前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
随遇而安zx35 分钟前
【多线程】---JMM 与 volatile 深度解析
java·多线程
姜穆澜1 小时前
机器学习实战指南:从算法原理到工程落地
人工智能·算法·机器学习
邪修king1 小时前
Re:Linux系统篇(十九):进程篇(八): 进程等待详解:wait/waitpid,僵尸进程到底该如何回收
java·开发语言
啵啵啵鱼1 小时前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
TinyMemory1 小时前
Java 面向对象核心入门(七):方法重载 Overload,同一个方法名能干不一样的活
java·面向对象·overload·方法重载
Q一件事2 小时前
RWEQ——保留与消去P的soil_loss联合推导
算法