poj 1321 棋盤問題 dfs

2021-07-04 21:04:25 字數 811 閱讀 2441

這道題並不是很難,但由於慣性思維,會考慮dirx、diry進行位置的點變換,但發現這樣子並不很容易就能遞迴出來。

這一題用的行列變換,這道題的價值就在於開拓思維,並不在於難度。

#include

#include

#include

using

namespace std;

const

int maxn =10;

char maps[maxn][maxn];

int vis[maxn];

int n, k;

int ans;

void

dfs(

int x,

int cnt)

if(x > n)

return

;//2個if順序不能交換 ,對應

dfs(x+1

, cnt)

for(

int i =

1; i <= n; i++)

}// printf("#2 ");

dfs(x+1

, cnt); //就是說 如果有4個地方可以放旗子,但只有2個棋子,就需要這一步,同時對應第二個if

//可以做個實驗把注釋掉的全部取消注釋,並把if交換順序,試一下就知道了

return;}

intmain()}

memset

(vis,0,

sizeof

(vis));

if(cnt1==k)

else

}return0;

}

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)

大概題意就是給你乙個棋盤,讓你放棋子,求在棋盤n n上的 放上k個棋子的所有情況的數目。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列。深搜可以搜尋出所有答案。直接看 include includebool chess 9 9 bool vis col 9 int n,k,ans void...