洛谷 P3392 涂国旗

原题链接

image

题解

首先用一个二维数组 记录每行中WBR的数量,用来提高查找速度
其次就是用两层for循环 进行区域划分,如下图所示
然后对区域内的所需更改颜色进行统计,这里要注意写好分界点,不然会WA
最后取最小值
image

#include "bits/stdc++.h"
using namespace std;
int main(){
int n,m,area[51][3]={0},ans=10000,rnt;
char ch;
cin>>n>>m;
//统计一行内的颜色数量
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>ch;
if(ch=='W')area[i][0]++;
else if(ch=='B')area[i][1]++;
else if(ch=='R')area[i][2]++;
}
}
for(int i=1;i<n-1;i++){
for(int j=i;j<n-1;j++){
//上面两层就是用来划分区域
rnt=area[0][1]+area[0][2]+area[n-1][0]+area[n-1][1];
for(int k=1;k<i;k++)rnt+=area[k][1]+area[k][2];
for(int h=i;h<=j;h++)rnt+=area[h][0]+area[h][2];
for(int g=j+1;g<n-1;g++)rnt+=area[g][0]+area[g][1];
ans=min(ans,rnt);
}
}
cout<<ans;
}

本文作者:ChengMao

本文链接:https://www.cnblogs.com/ChengMao/p/17058505.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Cheng_Mao  阅读(20)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起