P3392 塗國旗 暴力列舉

2022-09-12 03:24:08 字數 1177 閱讀 5356

某國法律規定,只要乙個由n×m 個小方塊組成的旗幟符合如下規則,就是合法的國旗。(毛熊:阿嚏——)

現有乙個棋盤狀的布,分成了 n 行 m 列的格仔,每個格仔是白色藍色紅色之一,小 a 希望把這個布改成該國國旗,方法是在一些格仔上塗顏料,蓋住之前的顏色。

小a很懶,希望塗最少的格仔,使這塊布成為乙個合法的國旗。

第一行是兩個整數 n,m。

接下來 n 行是乙個矩陣,矩陣的每乙個小方塊是w(白),b(藍),r(紅)中的乙個。

乙個整數,表示至少需要塗多少塊。

輸入

4 5

wrwrw

bwrwb

wrwrw

rwbwr

輸出

11
目標狀態是:

wwwww

bbbbb

rrrrr

rrrrr

一共需要改 11 個格仔。

對於 100% 的資料,n,m≤50。

看這道題給的資料範圍,在50以內,可見資料量並不大,當然直接就可以使用暴力列舉了。

這道題規定了國旗是由三個區域構成的,白(w),藍(b),紅(r)。在這裡我們可以使用i,j分別代表白藍區域的結束行,然後i從1開始遍歷,而j從i+1開始(因為藍色區域一定在白色區域下方)。此外i<=n-2(至少得留2行,因為後面還有藍紅區域),j<=n-1(後面還有乙個紅色區域)。

#include#include#includeusing namespace std;

#define inf 0xffffff

int n, m;

char arr[55][55]; //儲存每行的wbr的數量

int ans = inf;

int main()

} for (int i = 1; i <= n - 2; i++) //用i和j表示第一塊和第二塊顏色的結束的區域,然後列舉所有可能

for (int j = i + 1; j <= n - 1; j++)

printf("%d\n", ans);

return 0;

}

P1008 三連擊 列舉,暴力

題目背景 本題為提交答案題,您可以寫程式或手算在本機上算出答案後,直接提交答案文字,也可提交答案生成程式。題目描述 將1,2,9共99個數分成3組,分別組成3個三位數,且使這3個三位數構成1 2 3的比例,試求出所有滿足條件的33個三位數。輸入格式 木有輸入 輸出格式 若干行,每行33個數字。按照每...

P1088 火星人 暴力列舉 全排列

人類終於登上了火星的土地並且見到了神秘的火星人。人類和火星人都無法理解對方的語言,但是我們的科學家發明了一種用數字交流的方法。這種交流方法是這樣的,首先,火星人把乙個非常大的數字告訴人類科學家,科學家破解這個數字的含義後,再把乙個很小的數字加到這個大數上面,把結果告訴火星人,作為人類的回答。火星人用...

P1157 組合的輸出 暴力列舉 dfs

排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。現要求你輸出所有組合。例如n 5,r 3,所有組合為 123,124,125,134,135,145,234,235,245,345 一行兩個自然數n,...