POJ 1321
来源:互联网 发布:喜剧网络剧他大舅 编辑:程序博客网 时间:2024/06/08 08:04
找了这题回溯挺好的,刚学的菜鸟动动脑子做出来受益不浅啊哈哈。
主体和八皇后差不多,区别在于这题棋子数可以少于行数,八皇后是棋子放完了就退出了,所以在循环结束后加上一个条件语句,如果棋子数不满足k个并且不是最后一行,那么再去继续搜索。还有一点就是上一个搜索退出后除了改变访问过的1还要num--,以便继续搜索。
#include<cstdio>#include <iostream>#include<cstring>using namespace std;int vis[4][50], tot,num;char Mao[10][10];int n,k;void dfs(int a){ if(num==k && a!=n) tot++; else if(num==k && a==n) tot++; else { for(int i=0; i<n; i++) { if(Mao[a][i]=='#' && !vis[0][i]) { num++; vis[0][i]=1; dfs(a+1); vis[0][i]=0; num=num-1; } } if(num!=k && a!=n) dfs(a+1); }}int main(){ while(scanf("%d%d",&n,&k) && n!=-1 && k!=-1) { num=0; tot=0; memset(vis,0,sizeof(vis)); memset(Mao,0,sizeof(Mao)); for(int i=0; i<n; i++) scanf("%s",Mao[i]); dfs(0); printf("%d\n",tot); } return 0;}
0 0
- poj 1321
- poj 1321
- poj 1321
- poj 1321
- poj-1321
- poj 1321
- poj 1321
- poj 1321
- poj 1321
- poj 1321
- poj 1321
- POJ 1321
- POJ 1321
- poj --1321
- poj 1321
- poj-1321
- poj 1321
- POJ 1321
- mysql 数据库用户创建和授权
- 【IMWeb训练营作业】---Select---
- 如何申请国际版一年期的Office 365开发者账号
- Java并发编程:Callable、Future和FutureTask
- C语言fflush()函数:清空文件缓冲区(或标准输入输出缓冲区)
- POJ 1321
- java向上转型和向下转型
- 第6章 6.2 在代码段中使用栈
- I【Mweb训练作业】 select 组件
- 三十一 Swift3.0之 析构方法
- QQ影音播放MP4、MKV等视频文件有声音没图像,显示绿屏
- 文章标题
- 极限与复合极限的四则运算
- IMWeb第二次作业——Vue.js的select组件