POJ 1321 棋盤問題(搜尋)

2021-07-04 21:04:25 字數 1297 閱讀 4464

time limit:1000ms

memory limit:10000k

total submissions:28825

accepted:14276

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

一做搜尋的題目,就有著開兩個陣列dx,dy,來進行搜尋的定式思維,其實那個就是用來走迷宮的。。

題目要求選擇的棋子不同行,不同列,所以我們可以一行一行的搜尋,找到了 # 就直接進入下一行

這樣首先保證了不同行,然後再開乙個vis【】陣列,用來記錄棋子所在列數,深搜即可。

【源**】

#include#include #include using namespace std;

int n,k,ans;

char map[10][10];

bool vis[10];

void dfs(int cur,int cnt)

if(cur>n) //如果超過最後一行

return ;

for(;cur<=n;cur++) //起點從第一排開始搜

for(int j=1;j<=n;j++) }

}int main()

ans = 0;

dfs(1,0);

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

} return 0;

}

POJ 1321 棋盤問題 搜尋

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

POJ 1321 棋盤問題 搜尋

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

POJ1321棋盤問題 搜尋

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