hdu-1045 Fire Net
来源:互联网 发布:电路磁场仿真软件 编辑:程序博客网 时间:2024/06/05 09:10
http://acm.hdu.edu.cn/showproblem.php?pid=1045
题意:题目说在一个特殊的地图里面摆碉堡,但是不能在同一行或者同一列摆一个以上的碉堡除非中间隔了一堵墙。
思路:记住每一次到达最后一个点的可放碉堡数,更新最大值。
#include<cstdio>char map[5][5];int n,m,max;int pd(int x,int y){ for(int i=x-1;i>=0;i--) //判断行, { if(map[i][y]=='O') return 0; //如果前面已经放过就不能在放 else if(map[i][y]=='X')break; //有墙直接跳出 } for(int i=y-1;i>=0;i--) //判断列 { if(map[x][i]=='O') return 0; else if(map[x][i]=='X') break; } return 1;}void dfs(int k,int m){ if(k==n*n) //到达最后一个点 { if(m>max) max=m; //保存这种方法最多能摆的碉堡数 return; } else { int x=k/n; //行 int y=k%n; //列 if(map[x][y]=='.'&&pd(x,y)) //可以摆找下一个可以摆的地方 { map[x][y]='O'; dfs(k+1,m+1); map[x][y]='.'; } dfs(k+1,m); //不能摆或者回溯回来。 }}int main(){ while(scanf("%d",&n)!=EOF&&n) { max=0; for(int i=0;i<n;i++) scanf("%s",map[i]); dfs(0,0); printf("%d\n",max); } return 0;}
0 0
- hdu 1045 Fire Net
- HDU 1045 Fire Net
- HDU 1045 Fire Net
- Hdu 1045 Fire Net
- HDU 1045 Fire Net
- hdu 1045 Fire Net
- HDU-1045-Fire Net
- hdu 1045 Fire Net
- hdu 1045 Fire Net
- HDU 1045 Fire Net
- hdu 1045 Fire Net
- HDU-1045 Fire Net
- HDU:1045 Fire Net
- HDU 1045 Fire Net
- HDU 1045 Fire Net
- hdu 1045 Fire Net
- hdu 1045 Fire Net
- hdu 1045 Fire Net
- 50个创意进度条优秀设计(附PSD下载)
- 面向对象程序设计上机练习二(函数模板)
- oracle 索引介绍
- Weka 学习之调用Weka 分类算法
- 传递复杂数据类型的远程Service
- hdu-1045 Fire Net
- 50套高品质UI组件包下载
- java native初步认识
- UNP卷1:第五章(TCP客户/服务器程序示例)
- 任意输入一个不超过八位数,反序输出,并打印出它是几位数。
- 欢迎来到C++的世界
- 从头到尾彻底理解KMP
- vi 下的分屏显示命令:vsp和sp
- 【排序算法】冒泡排序