poj 1321 棋盤問題(DFS)

2021-06-20 20:33:58 字數 489 閱讀 6859

大概題意就是給你乙個棋盤,讓你放棋子,求在棋盤n*n上的『#』放上k個棋子的所有情況的數目。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列。

深搜可以搜尋出所有答案。

直接看**:

#include#includebool chess[9][9];

bool vis_col[9];

int n,k,ans;

void dfs(int row,int num) //當前搜尋到row,num為已經放下的棋子

if(row>n) //配合下面dfs(row+1,num); 語句使用,避免搜尋越界

return ;

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

if(chess[row][j] && !vis_col[j])

dfs(row+1,num); //這裡是難點,當k

能力不夠,陷入浮躁做題的死迴圈裡,參考了網上大神們的**,憋出一題,這樣做能進步嗎。。。???

POJ 1321 棋盤問題(棋盤DFS)

棋盤問題 思路 分層查詢,逐行深搜。注意k n時的處理。1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 include 10 define ll long long 11 define...

POJ 1321 棋盤問題 DFS

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

poj 1321 棋盤問題(dfs)

language default 棋盤問題 time limit 1000ms memory limit 10000k total submissions 23127 accepted 11478 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放...