POJ 1321 棋盤問題 DFS

2021-07-31 20:14:08 字數 782 閱讀 6364

題目鏈結

題目大意:

中文題目無需解釋吧!

解題思路

利用dfs按行掃瞄即可,注意是 "#"的地方才能放棋子,可能有的行沒有"#",也可能可以放棋子的地方多於棋子數。題目中遇到比較坑爹的地方就是-每一行都可以放或不放棋子,就因為沒有考慮到這種情況,導致提交**一直wa。

#include #include "stdio.h"

using namespace std;

int n, k;

int col[10] = ;

char map[10][10] = ;

int sum;

void dfs(int num, int begin)  //其實dfs如何設計引數最重要,這裡num是要放的第幾顆棋子,begin是開始的行數

if(begin > n) return;  // 這步邊界判斷是防止越界。不寫你試試

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

dfs(num, begin + 1); // 當k> n >> k)&& (n != -1 && k != -1))

memset(col, 0, sizeof(col));

dfs(0, 0);  // 其實條件也很重要啊!

cout << sum << endl;

} return 0;

}



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