二染色問題

2021-08-15 08:15:15 字數 1154 閱讀 6702

乙個n*n的網格,初始為白色。現在有乙個k*k的印章,每次操作:你可以用印章把網格中乙個k*k的子矩形染成黑色或白色。如果乙個格仔被多次染色,那麼後一次染色會覆蓋掉前一次的。現在,給你n*n的由黑白兩色構成的圖案board(board[i][j]為第i行第j列格仔的顏色,不是白字母『w』表示,就是黑由字母『b』表示),問是否能通過若干次操作,將網格從初始狀態染成圖案board的樣子。如果可以輸出"possible",否則輸出"impossible".

input

多組測試資料,第一行乙個整數t,表示測試資料數量,1<=t<=5

每組測試資料有相同的結構構成:

每組資料一行兩個整數n與k,其中1<=k<=n<=20。

之後n行,每行n個字元,表示board,字元都由『w』與『b』構成。

output

每組資料一行輸出,即是否可能染出board圖案來。
input示例

3

4 3bbbw

bwww

bwww

wwww

2 2bw

wb6 2

bwbwbb

wbwbbb

bwbwbb

wbwbbb

bbbbbb

bbbbbb

output示例

possible

impossible

possible#include #include #include using namespace std;

const int maxn = 25;

char input[maxn][maxn];

bool vis[maxn][maxn];

int t, n, k;

int main()

while (flag)

found = true;

if (input[l][r] == 'b')

else}}

if ((suma == 0 || sumb == 0) && found)}}

}}

} flag = true;

for (int i = 0; i < n; i++)

}} if (flag)

else

}return 0;

}

網格染色問題

有乙個網格,在初始狀態下所有網格都是空白的。現有如下操作 執行n次操作,每次選擇座標對應的那一行和一列,在該行或該列上選擇兩個端點網格,將兩個端點網格間的所有網格 包括端點網格 都染色。具體染色規則 如果兩個網格座標 x1,y1 和 x2,y2 中橫座標x1 x2,則把這一列所有網格都染色,如果縱座...

51nod 1448 二染色問題

題意 乙個n n的網格,初始為白色。現在有乙個k k的印章,每次操作 你可以用印章把網格中乙個k k的子矩形染成黑色或白色。如果乙個格仔被多次染色,那麼後一次染色會覆蓋掉前一次的。現在,給你n n的由黑白兩色構成的圖案board board i j 為第i行第j列格仔的顏色,不是白字母 w 表示,就...

E Cover it 黑白染色問題

傳送門哈哈傳遞哈斯防火牆 因為圖 聯通,我 們任取一 點開始遍 歷因為圖聯通,我們任取一點開始遍歷 因為圖聯通,我們任取 一點開始 遍歷 比如從 點1開始 那麼假 設1塗色 比如從點1開始,那麼假設1塗色 比如從點1開 始,那麼 假設1塗 色 那 麼和 1相鄰的 不上色,相鄰的相 鄰上 色那麼和1相...