洛谷 P3392 涂国旗
生活随笔
收集整理的這篇文章主要介紹了
洛谷 P3392 涂国旗
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?P3392 涂國旗
題目描述
某國法律規定,只要一個由N*M個小方塊組成的旗幟符合如下規則,就是合法的國旗。(毛熊:阿嚏——)
-
從最上方若干行(>=1)的格子全部是白色的。
-
接下來若干行(>=1)的格子全部是藍色的
- 剩下的行(>=1)全部是紅色的
現有一個棋盤狀的破布,分成了N行M列的格子,每個格子是白色藍色紅色之一,小a希望把這個布改成該國國旗,方法是在一些格子上涂顏料,蓋住之前的顏色。
小a很懶,希望涂最少的格子,使這塊破布成為一個合法的國旗。
輸入輸出格式
輸入格式:?
第一行是兩個整數,N,M
接下來N行是一個矩陣,矩陣的每一個小方塊是'W'(白),'B'(藍),'R'(紅)中的一個
?
輸出格式:?
一個整數,表示至少需要涂多少塊。
?
輸入輸出樣例
輸入樣例#1:4 5 WRWRW BWRWB WRWRW RWBWR 輸出樣例#1:
11
說明
樣例解釋:
目標狀態是
WWWWW BBBBB RRRRR RRRRR一共需要改11個格子
對于100%的數據,N,M<=50
?
/*純暴力枚舉 O(n^4) 一層一層搜 依次更新ans找到最小值*/ #include<cstdio> int n,m,ans=1e9; char a[52][52]; int main() {scanf("%d%d",&n,&m);for (int i=0;i<n;i++)scanf("%s",a[i]);for (int i=0;i<n-2;i++)for (int j=i+1;j<n-1;j++){int tot=0;for (int x=0;x<=i;x++)for (int y=0;y<m;y++)if (a[x][y]!='W')tot++; //染白需幾步 for (int x=i+1;x<=j;x++)for (int y=0;y<m;y++)if (a[x][y]!='B')tot++; //染藍需幾步 for (int x=j+1;x<n;x++)for (int y=0;y<m;y++)if (a[x][y]!='R')tot++; //染紅需幾步 if (tot<ans)ans=tot;}printf("%d",ans);return 0; }?
轉載于:https://www.cnblogs.com/xiaoqi7/p/5905161.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的洛谷 P3392 涂国旗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tp5 php7 报500,记一次TP单
- 下一篇: 视觉SLAM十四讲第一讲