poj1321 kuagnbin帶你飛專題一

2022-06-05 04:24:09 字數 1235 閱讀 8908

棋盤問題

time limit:1000ms

memory limit:10000k

total submissions:43565

accepted:21163

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

source

蔡錯@pku

#include #include 

#include

#include

using

namespace

std;

int usee[10

];int cou=0

;int

n,k;

char panel[10][10

];void cal(int a,int kk)

else

if(a==n+1

)else

}cal(a+1

,kk);//要注意k可能是小於n的,這一種是當前行不放棋子的情況。

}}int

main()

getchar();

}cal(

0,0);

printf(

"%d\n

",cou);

}return0;

}

poj1321解題報告

哎哎.對自己還是蠻失望.剛開始看這個題目知道用dfs 但是就是不知道怎麼處理.糾結了好久,最開始用乙個for 迴圈老得不出正確答案.因為這個dfs有事遞迴呼叫.都不知道錯在 好久之後在看.這裡想到了用乙個兩重迴圈去判斷.第一,我們需要對於棋盤中的每乙個位置考慮,第二因為我們要對當前的乙個位置考慮在這...

POJ 1321 棋盤問題

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

poj 1321 棋盤問題

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