pku 1321 棋盘问题
2012-03-20 20:30
246 查看
http://poj.org/problem?id=1321 题目没什么好说的,算是dfs里面的一道水题。
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define N 10 char str ; int r ,c ; // r 用来标记该行已经有旗子放了,c用来标记该列有棋子放上了 int sum,num; int n,k; void dfs(int x) { int i,j; if(num == k) {sum++ ; return ;} for(i = x; i < n; i++) { for(j = 0; j < n; j++) { if(str[i][j] == '#' && !r[i] && !c[j]) { num++ ; r[i] = 1; c[j] = 1; dfs(i+1); num--; r[i] = 0; c[j] = 0; } } } } int main() { int i,j; while(cin>>n>>k) { if(n == -1 && k == -1) break; for(i = 0; i < n; i++) { r[i] = c[i] = 0; for(j = 0; j < n;j++) { cin>>str[i][j]; v[i][j] = 0; } } sum = 0; for(i = 0; i < n; i++) { for(j = 0; j < n;j++) if(str[i][j] == '#') { r[i] = 1; c[j] = 1; num = 1; dfs(i+1); r[i] = 0; // 记得恢复初值 c[j] = 0; // 记得恢复初值 } } cout<<sum<<endl; } return 0; }
相关文章推荐
- PKU1321——棋盘问题
- pku1321 棋盘问题
- pku 1321 棋盘问题 简单DFS
- pku 1321 棋盘问题 DFS
- pku1321 棋盘问题 依然是DFS
- pku 1321 棋盘问题
- pku 1321 棋盘覆盖问题
- pku 1321 深搜 棋盘问题 解题报告
- [Poj 1321] 棋盘问题 dfs
- POJ 1321 棋盘问题
- POJ 1321, 棋盘问题
- POJ 1321 || 棋盘问题 (dfs + 优化
- POJ1321 棋盘问题(dfs)
- poj 1321 棋盘问题
- POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)
- poj1321棋盘问题
- Poj 1321 棋盘问题
- POJ,1321,棋盘问题
- POJ---1321 棋盘问题【回溯法】
- poj 1321 棋盘问题