hdu(1045)Fire Net(深搜+回朔)
来源:互联网 发布:c语言 new 编辑:程序博客网 时间:2024/06/05 22:59
#include"stdio.h"
#include"string.h"
char map[20][20];
int n,cnt;
int judge(int x,int y)//判段此位置是否可以放。。
{
int i;
if(map[x][y]=='X')
return 0;
for(i=x-1;i>=0;i--)
{
if(map[i][y]=='@')//说明已经放过。
return 0;
if(map[i][y]=='X')
break;
}
for(i=y-1;i>=0;i--)
{
if(map[x][i]=='@')
return 0;
if(map[x][i]=='X')
break;
}
return 1;
}
void dfs(int k,int count)//k表示第几个点,count表示到这个点最多可以放的个数。
{
if(k==n*n)//这里不是n*n-1,因为第n*n-1个点,仍有两种选择,放与不放。。到达了节点n*n。。
{
if(count>cnt)
{
cnt=count;
return ;
}
}
else
{
int x,y;//求出此点的坐标。
x=k/n;
y=k%n;
if(judge(x,y))//如果可以放就放,放完之后还要搜索不放的情况,最后再去能放最多的个数。。
{
map[x][y]='@';
dfs(k+1,count+1);
map[x][y]='.';
}
dfs(k+1,count);
}
}
int main()
{
int i;
while(scanf("%d",&n),n)
{
cnt=0;
for(i=0;i<n;i++)
scanf("%s",map[i]);
dfs(0,0);
printf("%d\n",cnt);
}
return 0;
}
- hdu(1045)Fire Net(深搜+回朔)
- HDU 1045 Fire Net(DFS)
- hdu 1045 Fire Net (DFS)
- hdu 1045 Fire Net(回溯搜索)
- hdu 1045 Fire Net(贪心)
- HDU 1045 Fire Net(DFS)
- hdu 1045 Fire Net(DFS)
- hdu 1045 Fire Net(最大流)
- HDU 1045 Fire Net(贪心)
- HDU 1045 Fire Net(二分匹配)
- HDU 1045 Fire Net(搜索剪枝)
- HDU 1045 Fire Net【深搜】
- 【hdu】 Fire Net (dfs)
- HDU Fire Net (贪心)
- hdu Fire Net(DFS)
- hdu 1045 Fire Net
- HDU 1045 Fire Net
- HDU 1045 Fire Net
- 数据结构与算法 java版 学习笔记 第二章
- MFC 模态对话框的实现原理
- hibernate 多表查询
- ZOJ1414
- oracle,job停了
- hdu(1045)Fire Net(深搜+回朔)
- 找忘记填写性别的员工
- FOJ1559
- Eclipse调试Java的10个技巧
- C++访问MySql数据库
- 两年了——青春!
- c++:eclipse 开发c++环境配置(保你编译成功)
- Spring MVC 教程,快速入门,深入分析
- Web Application Vulnerability Scanners – W3AF – 12.10 xUbuntu Installation