poj1321题解(也是我的第一篇博客)
2016-05-12 10:06
302 查看
和八皇后问题基本类似,回溯算法搞定。//在poj提交时最好不要用布
//尔类型,ce过
//尔类型,ce过
#include <stdio.h> #include <string.h> #include <stdbool.h> char chess[9][10];//最后一个放换行符 int n,k,count; bool is_put(int row,int cline) { int i; for(i=1;i<=n;i++) if(!chess[i][cline]||!chess[row][i]) return false; return true; } void dfs(int nrow,int hget) { int i,j; if(hget==k) { count++; return; } for(i=nrow;i<=n;i++) for(j=1;j<=n;j++) { if(chess[i][j]=='#') { if(is_put(i,j)) { chess[i][j]='\0'; dfs(i+1,hget+1); chess[i][j]='#'; } } } } int main(int argc, char const *argv[]) { int i,j; while(scanf("%d %d",&n,&k)==2&&n!=-1&&k!=-1) { getchar();//去掉第一行的换行符 memset(chess,0,sizeof(chess)); for(i=1;i<=n;i++) for(j=1;j<=n+1;j++) scanf("%c",chess[i]+j); count=0; dfs(1,0); printf("%d\n",count ); } return 0; }
相关文章推荐
- 拒绝传统,看 Facebook 如何以三大法宝化茧成蝶:人才吸引、工程师文化和项目开发流程
- OC 创建和写入plist文件
- freemark常见用法
- VC线程安全退出的方法
- struts2 s:select使用
- 适配器、工厂模式、线程池、线程组、互斥锁、Timer类、Runtime类、单例设计模式(二十四)
- POJ 1915 Knight Moves
- UDP程序设计
- 增强学习(Q-learning)
- 内存问题--全局变量被修改
- sql笔记
- Core Animation
- 21分钟mysql入门教程
- JS实现表单的验证
- map几种方法
- 公众号判断用户是否已关注php代码
- OC 对象和匿名对象
- OpenWRT with OpenvSwitch 刷路由器教程
- Mysql迁移到Oracle简单记录
- 分享,请不要忽视了作者的版权