POJ 1321----棋盘问题(dfs+回溯)
2015-08-14 10:10
381 查看
#include<cstdio> #include<cstring> int n,k,cnt; char g[10][10]; int used[10]; //用于放置棋子的列标记 void dfs(int row,int num) { int i; if(num==k) //当一种方式搜完后,方式加 1; { cnt++; return; } if(row==n) return; //当行数超过时,深搜结束。 for(i=0;i<n;i++) //第row行i列放一个棋子 { if(!used[i]&&g[row][i]=='#') { used[i]=1; dfs(row+1,num+1); used[i]=0; //回收当前棋子 } } dfs(row+1,num); //row这一行不放棋子 } int main() { int i,j; while(~scanf("%d%d",&n,&k)) { if(n==-1&&k==-1) break; for(i=0;i<n;i++) scanf("%s",g[i]); memset(used,0,sizeof(used)); cnt=0; dfs(0,0); printf("%d\n",cnt); } return 0; }
相关文章推荐
- 2016校招华为机试题目回忆1
- uvalive4043 二分图
- maven:profile介绍
- iOS中UIWebView的使用详解
- 句子逆序
- Python中range和xrange的异同之处
- 什么是 HTML?
- jQuery的层次选择器
- 关于oracle+ibatis批量insert的写法
- ASP.NET用户注册实战(第11节)
- VC++获取病毒的消息钩子
- iOS_UITableView 编辑(cell的插入, 删除, 移动)
- 10盏灯初始状态为暗,一个人顺次按动开关,每走一次后少按一盏灯,求最后10盏灯的状态
- loadrunner输出log中的乱码解决
- iOS概念入门学习-C语言-指针
- 封装好的Potoutil工具类,调用拍照、相册以及对图片做处理
- datagrid
- innerHTML中标签可以换行的方法汇总
- PHP中include_path
- mysql关键字