棋盤問題 POJ 1321 DPS

2021-09-03 08:39:00 字數 656 閱讀 4023

題目鏈結

最近開始看dfs了,感覺寫的時候還是有點迷,還是得多練。

題意就是 在「#」的地方可以放棋子,問在棋盤上有多少種可以放的方式。

剛開始以為跟八皇后差不多(只是條件少了),後來發現棋子還不一定是跟行數一樣的。

但思路和方法跟八皇后差不多。

ac**如下:

#include

using namespace std;

const

int maxn=

1e3;

int n,m;

string a[maxn]

;//用來存放棋盤。

bool vis[1]

[maxn]

;//用來存放某列的狀態

long

long tot=0;

//用來統計種類的個數

void

dfs(

int x,

int cnt)

//cnt代表行

else

if(cnt==n)

//如果cnt遍歷到最後一行還沒有達到x==m就返回

return

;else}}

}int

main()

return0;

}

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 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一...

POJ 1321 棋盤問題

找到第乙個有 的行開始回溯就可以了 include include using namespace std const int maxn 9 char board maxn maxn bool c maxn int ans,n,k void backtracking int curi,int cnt...