hdu 1045 zoj1002 八皇后问题 dfs
来源:互联网 发布:sql not like用法 编辑:程序博客网 时间:2024/05/21 16:57
题意:尽可能多的往棋盘上放城堡,因为城堡可以向上下左右射击,所以两个城堡不能在同一条x或者y上,但是墙壁可以挡住子弹,中间有墙的话就可以建多个城堡了。(讲的不是很清楚 题意还是自己去看比较好)
这个问题其实就是八皇后问题的更进一步,本来也就只是试试的想法做的,没想到 1A了。真是开心呀!
解题方法 : 回溯
http://acm.hdu.edu.cn/showproblem.php?pid=1045
#include<stdio.h>#include<string.h>char map[105][105];int a[105][105];int n;bool can(int x,int y) // 判断这个位置能否放置城堡{int i;for(i=y-1;i>=0;i--)if(map[x][i]=='X') break;else if(map[x][i]=='K')return false;for(i=x-1;i>=0;i--)if(map[i][y]=='X') break;else if(map[i][y]=='K')return false;return true;}int max;void dfs(int y,int count){int i,j;if(count>max)max=count;for(j=y;j<n;j++)for(i=0;i<n;i++){if(map[j][i]!='K'&&map[j][i]!='X'&&can(j,i)){map[j][i]='K'; //将能放城堡的地方标记为Kcount++;dfs(j,count);count=0; //开始的时候忘记了下面两句话,对dfs深搜还不熟练呀map[j][i]='.';}}}int main(){while(scanf("%d",&n)==1,n){getchar();int i;for(i=0;i<n;i++)gets(map[i]);memset(a,0,sizeof(a));max=-99;dfs(0,0);printf("%d\n",max); }return 0;}
- hdu 1045 zoj1002 八皇后问题 dfs
- 八皇后问题(DFS)
- 八皇后问题 DFS
- 八皇后问题 DFS
- 八皇后问题-DFS
- 八皇后问题 DFS
- C语言DFS(6)___八皇后问题(Hdu 2612)
- 八皇后问题DFS解法
- DFS解八皇后问题
- Dfs回溯-八皇后问题
- 八皇后问题:DFS剪枝
- 八皇后问题(DFS剪枝)
- 八皇后问题-回溯-DFS
- 八皇后问题(dfs常规解法)
- hdu2553八皇后问题(DFS)
- 八皇后改DFS
- DFS之八皇后
- 八皇后(dfs)
- dom4j xml文档 增加节点
- 事务的理解
- 写文件常用方法
- 初识Wicket!!
- 程序员该如何规划自己的人生
- hdu 1045 zoj1002 八皇后问题 dfs
- HDOJ2046 骨牌铺方格
- android编译全过程
- 常见的海量数据处理方法
- 程序员技术练级攻略
- QT信号槽
- hibernate注解简介
- SetUnhandledExceptionFilter处理未捕获异常
- samba的安装(tar.gz方式)