简单个人网站制作,河南推广网站,成都网站建设怎么样,海外直购网站建设方案书范文# 涂国旗
## 题目描述
某国法律规定#xff0c;只要一个由 $N \times M$ 个小方块组成的旗帜符合如下规则#xff0c;就是合法的国旗。#xff08;毛熊#xff1a;阿嚏——#xff09;
- 从最上方若干行#xff08;至少一行#xff09;的格子全部是白色的#xff1b…# 涂国旗
## 题目描述
某国法律规定只要一个由 $N \times M$ 个小方块组成的旗帜符合如下规则就是合法的国旗。毛熊阿嚏——
- 从最上方若干行至少一行的格子全部是白色的 - 接下来若干行至少一行的格子全部是蓝色的 - 剩下的行至少一行全部是红色的
现有一个棋盘状的布分成了 $N$ 行 $M$ 列的格子每个格子是白色蓝色红色之一小 a 希望把这个布改成该国国旗方法是在一些格子上涂颜料盖住之前的颜色。
小a很懒希望涂最少的格子使这块布成为一个合法的国旗。
## 输入格式
第一行是两个整数 $N,M$。
接下来 $N$ 行是一个矩阵矩阵的每一个小方块是W白B蓝R红中的一个。
## 输出格式
一个整数表示至少需要涂多少块。
## 样例 #1
### 样例输入 #1 4 5 WRWRW BWRWB WRWRW RWBWR
### 样例输出 #1 11
## 提示
### 样例解释
目标状态是
plain WWWWW BBBBB RRRRR RRRRR 一共需要改 $11$ 个格子。
### 数据范围
对于 $100\%$ 的数据$N,M \leq 50$。 当各位看到这题时会怎么思考呢首先我觉得很多人会考虑有没有规律所以我们经过规律的寻找发现没有规律也没有什么简便方法。所以这时候我们就要考虑运用暴力美学了
·首先我们肯定使用字符串数组来记载字母那如何统计数量呢当然是用整型数组记录我们用三个整型数组记录更方便毕竟只有三种颜色也可以用二维数组
接着我们用循环来记录各种方案的颜色改变次数这可以用需要改变的颜色数组相加得到
最后我们比较一下得出最少得次数并输出最终结果。也可以在每次记录时进行比较这样更为简单。
最后呈上代码
#includestdio.h
int main() {int n, m, arr[550] { 0 }, brr[550] { 0 }, crr[550] { 0 }, a 0,ret0,sum,b,c,max0;char ac[100];scanf(%d%d, n, m);for (int i 0;i n;i) {scanf(%s, ac, 100);for (int j 0;j m;j) {if (ac[j] W) {arr[a] 1;}else if (ac[j] B) {brr[a] 1;}else {crr[a] 1;}}a;}while(retn-2) {sum 0;for (int i 0;i ret;i) {sumbrr[i] crr[i];}b 0;for (int j ret 1;j n - 2;j) {b crr[j] arr[j];c0;for (int v j1;v n;v) {c arr[v] brr[v];}asumbc;if (amaxmax! 0){max a;}else if (max 0) {max a;}a0;}ret;}printf(%d, max);return 0;
}
暴力美学你爱了吗