首页 > 试题广场 >

小红的矩阵染色

[编程题]小红的矩阵染色
  • 热度指数:5594 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个矩阵,初始有一些格子被染成了黑色。现在小红希望把最多k个未被染成黑色的格子染成红色,具体的计分方式是:如果一个红色格子下方相邻的格子也是红色,那么这个红色格子可以获得1分。
小红想知道,最多可以得到多少分?

输入描述:
第一行输入三个正整数n,m,k,代表矩阵的行数和列数、以及小红最多可以染色的格子数量。
接下来的n行,每行输入一个长度为m的字符串,用来表示矩阵的初始染色情况。'*'字符代表黑色,'o'字符代表白色。
1\leq n,m \leq 1000
1\leq k \leq n*m


输出描述:
一个整数,代表小红可以获得的最大分数。
示例1

输入

4 4 3
*o*o
oooo
****
oooo

输出

1

说明

将矩阵染色成如下样式即可('r'代表红色):
*r*o
oroo
****
oooo

示例2

输入

3 3 3
*o*
*o*
*o*

输出

2
头像 zhenghahahawda
发表于 2025-07-30 13:58:37
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool cmp(int a1,int a2) { return a1>a2; } i 展开全文
头像 丨阿伟丨
发表于 2025-08-27 17:03:19
题目链接 小红的矩阵染色 题目描述 小红有一个 的矩阵,其中一些格子是黑色的 ('*'),另一些是白色的 ('o')。她最多可以把 个白色格子染成红色。 计分规则是:如果一个红色格子下方相邻的格子也是红色,那么这个红色的格子可以获得1分。请问小红最多可以得到多少分? 解题思路 这是一个典型的贪心 展开全文
头像 BraveCoder
发表于 2025-08-31 11:26:29
import java.util.Scanner; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void 展开全文
头像 手有余湘
发表于 2025-07-25 22:04:40
import sys n,m,k=map(int,input().split()) table=[] for i in range(n): table.append(list(input())) result=[] for j in range(m): middle=[] f 展开全文
头像 王圣涵
发表于 2025-10-03 22:09:17
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; i 展开全文
头像 能干的勇士不放弃
发表于 2025-08-29 11:06:48
import sys a = [ i.replace('\n','') for i in list(sys.stdin)] n,m,k = tuple(map(int,a[0].split(' '))) a.pop(0) max_o = [] score = 0 for j in range(m): 展开全文
头像 Leoxm
发表于 2025-06-28 12:45:59
#include <stdio.h> #include <stdlib.h> int compare(const void* a, const void* b) { return (*(int*)b - * (int*)a); } int main() { 展开全文
头像 兴趣使然的杰斯曼
发表于 2025-12-07 17:21:55
import sys data = sys.stdin.read().strip().split() n = int(data[0]) m = int(data[1]) k = int(data[2]) matrix = data[3:] olist = [] for i in range(m) 展开全文
头像 看那一片海
发表于 2025-07-14 11:06:50
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool cmp(int num1,int num2){ return num1>nu 展开全文
头像 苦闷的芒果在看数据
发表于 2025-12-01 17:46:36
import sys while True: try: n,m,k = map(int,input().split()) bod = [] arr = [] sep = 0 for _ in range(n): 展开全文