hdu 1010 (DFS+剪枝)
来源:互联网 发布:vue.js 页面加载动画 编辑:程序博客网 时间:2024/06/09 14:53
点击打开链接
分析:
BFS,DFS,都可以,只要拍注意剪枝就可以了。
注意题目中要求只能在T秒到D。
题目中有坑。测试数据中每行有多余的空格。。。就这一点卡了一个晚上
#include"stdio.h"#include"string.h"#include"math.h"#define zz 10int mark[zz][zz];char map[zz][zz];int n,m,t,s,e,ss,ee,f;int dir[4][2]={1,0,0,1,-1,0,0,-1};void dfs(int x,int y,int t){int i,dis;int xx,yy;if(x==ss&&y==ee){if(t==0)f=1;return ;}if(f==1)return ;dis=abs(x-ss)+abs(y-ee);if(dis>t||(t-dis)%2!=0)return ;for(i=0;i<4;i++){xx=x+dir[i][0];yy=y+dir[i][1];if(xx>=0&&xx<n&&yy>=0&&yy<m&&!mark[xx][yy]&&map[xx][yy]!='X'){mark[xx][yy]=1;dfs(xx,yy,t-1);mark[xx][yy]=0;}}}int main(){int i,j,k;while(scanf("%d %d %d%*c",&n,&m,&t)!=-1&&(n+m+t)){k=0;memset(map,0,sizeof(map));memset(mark,0,sizeof(mark));for(i=0;i<n;i++){for(j=0;j<m;j++){scanf("%c",&map[i][j]);if(map[i][j]=='S')s=i,e=j;if(map[i][j]=='D')ss=i,ee=j,k++;if(map[i][j]=='.')k++;}scanf("%*c");}if(k<t){printf("NO\n");continue;}f=0;mark[s][e]=1;dfs(s,e,t);if(f==1)printf("YES\n");else printf("NO\n");}return 0;}
- hdu 1010 (DFS+剪枝)
- DFS 剪枝 hdu 1010
- HDU 1010 DFS+剪枝
- hdu 1010 DFS + 剪枝
- hdu 1010 dfs+剪枝
- hdu 1010(dfs+剪枝)
- hdu 1010(dfs+剪枝)
- HDU 1010 DFS+剪枝
- hdu 1010 DFS+剪枝
- HDU 1010(搜索题,DFS+剪枝)
- HDU 1010( DFS+奇偶剪枝)
- HDU 1010 Dfs的精华(剪枝)
- hdu 1010 搜索(dfs+剪枝)
- HDU-1010(DFS+奇偶剪枝)
- DFS专攻:HDU 1010(DFS+奇偶剪枝)
- hdu oj 1010 dfs+剪枝
- hdu 1010 dfs+奇偶剪枝
- hdu--1010--DFS--奇偶性剪枝
- java中的多线程
- ubuntu12.04修复grub方法
- Makefile教程
- 双连通分量(DCC)
- centos下设置iptables
- hdu 1010 (DFS+剪枝)
- Rest风格的web服务开发-入门篇1
- 用例图、活动图和顺序图的关系
- 工作流三位一体的驱动方式- (表单)数据 状态 人工
- 黄生借书说
- 如何查找.NET程序内存不断上涨的原因(CLRProfiler)
- proxool详细配置
- 该刷一段时间的题了
- Ubuntu_Ubuntu下的PDF相关工具