POJ 1321 棋盤問題 dfs 回溯

2021-09-25 07:06:18 字數 549 閱讀 6602

題意:給定限定區域的棋盤,需要在棋盤裡放m個棋子,每個棋子不能在同一行同一列,求放棋子的方案數

思路:根據行來遞迴,每一行列舉每一列,若列沒有被選過則證明可以選,棋子數量加一遞迴下一行,否則棋子數量不變遞迴下一行

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn = 10;

int n, m, ans, vis[maxn];

char g[maxn][maxn];

void solve(int k, int j)

if (j >= n)

return;

for (int i = 0; i < n; i++)

} solve(k, j+1);

} int main()

ans = 0;

solve(0, 0);

cout << ans << endl;

}}

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...