POJ 1321 棋盘问题(dfs)
2015-04-07 21:40
357 查看
解析:
简单的dfs,逐行深搜,用一个vis数组来标记当前列是否已经放置棋子,如果没有放置,且当前的格子为 ‘#’ 就放置棋子并跳到下一行,如果没有可放置的棋子,就直接跳到下一行。AC代码
[code]#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <cstdlib> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const int N = 15; char grid ; bool vis ; int n, k, ans; void dfs(int row, int cur) { if(cur == k) { ans++; return ; } if(row >= n) return ; for(int j = 0; j < n; j++) { if(!vis[j] && grid[row][j] == '#') { vis[j] = true; dfs(row+1, cur+1); vis[j] = false; } } dfs(row+1, cur); } int main() { while(scanf("%d%d", &n, &k) != EOF) { if(n == -1 && k == -1) break; memset(grid, 0, sizeof(grid)); memset(vis, 0, sizeof(vis)); for(int i = 0; i < n; i++) { scanf("%s", grid[i]); } ans = 0; dfs(0, 0); printf("%d\n", ans); } 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 棋盘问题(状态压缩DP | DFS)
- POJ 1321 棋盘问题(DFS)
- POJ 1321-棋盘问题 简单搜索DFS
- (Relax DFS1.3)POJ 1321 棋盘问题(使用DFS来解决特定终点问题)
- poj 1321 棋盘问题 简单DFS
- poj 1321 :棋盘问题 (dfs)