題目鏈結
題目大意:
中文題目無需解釋吧!
解題思路
利用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...