棋盤問題 POJ 1321(DFS 遞迴)

2021-09-18 05:48:26 字數 1245 閱讀 5102

題目

棋盤問題

time limit:1000ms

memory limit:10000k

total submissions:78911

accepted:36891

description

在乙個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。

input

輸入含有多組測試資料。 

每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將在乙個n*n的矩陣內描述棋盤,以及擺放棋子的數目。 n <= 8 , k <= n 

當為-1 -1時表示輸入結束。 

隨後的n行描述了棋盤的形狀:每行有n個字元,其中 # 表示棋盤區域, . 表示空白區域(資料保證不出現多餘的空白行或者空白列)。 

output

對於每一組資料,給出一行輸出,輸出擺放的方案數目c (資料保證c<2^31)。

sample input

2 1

#..#

4 4...#

..#.

.#..

#...

-1 -1

sample output

2

1

題解:棋子的擺放只能是#,且不能同行或者同列,我們可以用遞增來進行搜尋,這樣就不會出現有相同行的情況了,對於同列的情況,我們可以設定乙個flag標記陣列來儲存狀態。

我們乍一看這是不是很像我們原來做的八皇后問題,其實這也就算是乙個八皇后的問題了,只不過本題要判斷一下不在一行或一列,規定了棋子的放置位置。

#include#include#includeusing namespace std;

int n , m , p , ans;

char mp[20][20];

bool flag[20];

void dfs(int z)

if(z >= n) //到達邊界

return ;

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

}dfs(z+1); //下一行

}int main()

return 0 ;

}

棋盤問題 POJ 1321 DFS

description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,...

POJ 1321(DFS 棋盤問題)

棋盤問題 time limit 1000ms memory limit 10000k total submissions 59850 accepted 28687 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同...

棋盤問題 POJ 1321(DFS)

棋盤問題 poj 1321 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n ...