323 棋盤問題(基礎題)需要回溯

2021-10-16 22:27:30 字數 837 閱讀 1108

題目

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

輸入輸入含有多組測試資料。

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

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

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

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

樣例輸入

2 1#.

.#4 4

…#…#.

.#…#…

-1 -1

樣例輸出21

#include

using

namespace std;

char a[10]

[10];

int n,k,chess,num;

int col[10]

;//標記棋盤列向有無棋子

void

dfs(

int i)

if(i>=n)

return

;//邊界條件要注意

for(

int j=

0;jdfs(i+1)

;//這一行沒放置棋子 ,查詢下一行

}int

main()

return0;

}

323 棋盤問題

name 323 棋盤問題 author date 15 07 17 14 59 description 323 棋盤問題 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子...

323 棋盤問題 DFS

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

棋盤問題(回溯)

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