poj 1321 -- 棋盘问题 (DFS)
2013-01-06 19:57
387 查看
dfs解决,逐行搜,注意当n<k时,要分成两个子问题,1、本行不放 2、本行放
递归解决即可
递归解决即可
#include<iostream> using namespace std; int a[10][10]; //记录棋盘信息 int pos[10]; //[]内代表列数,由于每列只能放一个,数组记录当前列是否放过 int cnt; int n,k; void dfs(int x,int y) //x是当前行,y是剩余棋子个数 { if(x==0||y==0) //终止条件 { cnt++; return ; } if(x>y) dfs(x-1,y); //子问题1 for(int i=1; i<=n; i++) //子问题2 { if(a[x][i]==1&&pos[i]==0) { pos[i]=1; dfs(x-1,y-1); pos[i]=0; } } } int main() { while(cin>>n>>k,n!=-1) { for(int i=0; i<=10; pos[i++]=0); cnt=0; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { char s; cin>>s; if(s=='.') a[i][j]=0; else a[i][j]=1; } if(k==0) cout<<"0"<<endl; else { dfs(n,k); cout<<cnt<<endl; } } }
相关文章推荐
- poj 1321 :棋盘问题 (dfs)
- poj 1321 棋盘问题 dfs搜索
- poj dfs相关之1321 棋盘问题
- POJ 1321 棋盘问题(DFS)
- POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)
- poj 1321 棋盘问题 (简单的DFS)
- POJ 1321 棋盘问题(DFS)
- poj 1321 棋盘问题 dfs暴力
- poj 1321 棋盘问题(dfs)
- POJ 1321 棋盘问题(dfs)
- POJ 1321 棋盘问题(棋盘DFS)
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
- Poj1321 棋盘问题 DFS
- POJ 1321 棋盘问题(DFS+回溯)
- POJ 1321-棋盘问题 简单搜索DFS
- Poj 1321 棋盘问题(DFS)
- POJ 1321-棋盘问题(dfs)
- POJ1321 棋盘问题(DFS||状压DP)
- 棋盘问题 POJ 1321 DFS
- POJ 1321 棋盘问题 DFS