[简单dfs]poj1321棋盘问题
2014-07-28 18:53
344 查看
简单的dfs,开一个数组col[MAX]标记某一列是否已经被占用即可.然后逐行搜索.
搜索时,依次尝试当前行各位置是否能摆放,如果能,就摆一个棋子,记录当前行放了棋子的方案数(我用res记录)
然后考虑当前行如果不放棋子的方案数目,一并加到res中.最后返回res即可.代码也很短.注释就不加了.
搜索时,依次尝试当前行各位置是否能摆放,如果能,就摆一个棋子,记录当前行放了棋子的方案数(我用res记录)
然后考虑当前行如果不放棋子的方案数目,一并加到res中.最后返回res即可.代码也很短.注释就不加了.
#include <cstdio> #include <cstring> const int MAX = 10; bool col[MAX]; char M[MAX][MAX]; int r, c, k; int dfs(int x, int cnt) { if (cnt == k) return 1; if (x >= r) return 0; int res = 0; for (int i = 0; i < c; ++i) { if (M[x][i] == '#' && !col[i]) { col[i] = true; res += dfs(x+1, cnt+1); col[i] = false; } } res += dfs(x+1, cnt); return res; } int main() { while (~scanf(" %d %d", &r, &k)) { if (r == -1) break; c = r; for (int i = 0; i < r; ++i) { scanf(" %s", M[i]); } memset(col, false, sizeof(col)); printf("%d\n", dfs(0, 0)); } return 0; }
相关文章推荐
- 棋盘问题 POJ - 1321 (简单DFS搜索)
- poj 1321 棋盘问题 简单DFS
- poj 1321 棋盘问题(简单dfs)
- POJ 1321-棋盘问题 简单搜索DFS
- POJ 1321 棋盘问题(简单dfs)
- POJ 1321 棋盘问题 简单的DFS
- POJ 1321 棋盘问题(简单dfs)
- POJ 1321-棋盘问题 简单搜索DFS
- poj 1321 棋盘问题 (简单的DFS)
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
- poj 1321 — 棋盘问题(简单DFS)
- POJ 1321棋盘问题(简单搜索dfs回溯)
- poj 1321 棋盘问题 简单dfs
- POJ 1321-棋盘问题-简单搜索DFS
- poj 1321 :棋盘问题 (dfs)
- poj 1321 棋盘问题 (dfs)
- POJ 1321 棋盘问题(棋盘DFS)
- poj 1321 棋盘问题(DFS)
- POJ 1321 棋盘问题类似八皇后 dfs搜索
- POJ 1321 棋盘问题 DFS