hdu1242Rescue(dfs基础)
来源:互联网 发布:js给div的value赋值 编辑:程序博客网 时间:2024/06/09 21:16
题目大意:给你一张n*m大小的地图,a是天使,r是士兵,#是墙,x是妖怪,.是路,遇到x要停一秒,问士兵到达天使的最短时间,移动一格也要一秒
思路:这题说是士兵找天使,不如说是天使找士兵,士兵有多个,天使只有一个,当天使能最快找到士兵也符合题意,我直接dfs,方法有点土,不过感觉比bfs好些,当然也牺牲了一些时间,bfs肯定快一些
代码如下:
#include<stdio.h>#include<string.h>int book[300][300],n,m,min;char map[300][300];int next[4][2]={ {0,1},{1,0},{0,-1},{-1,0}};void dfs(int x,int y,int cnt){ if(map[x][y]=='r') { if(cnt<min) min=cnt; return ; } if(map[x][y]=='x') cnt++; int i,j,a,b; for(i=0;i<=3;i++) { a=x+next[i][0]; b=y+next[i][1]; if(!book[a][b] && map[a][b]!='#' && a>=0 && a<n && b>=0 && b<m) { book[a][b]=1; dfs(a,b,cnt+1); book[a][b]=0; } } return ;}int main(){ int i,j; while(~scanf("%d%d",&n,&m)) { getchar(); memset(book,0,sizeof(book)); min=n*m+1; for(i=0;i<n;i++) gets(map[i]); for(i=0;i<n;i++) for(j=0;j<m;j++) if(map[i][j]=='a') { book[i][j]=1; dfs(i,j,0); break; } if(min==n*m+1) puts("Poor ANGEL has to stay in the prison all his life."); else printf("%d\n",min); } return 0;}
阅读全文
1 0
- hdu1242Rescue(dfs基础)
- hdu1242Rescue(BFS and DFS)
- hdu1242Rescue
- hdu1242Rescue
- HDU1242Rescue
- 【BFS】HDU1242Rescue
- DFS基础(一)
- DFS基础(二)
- hdu 1016(dfs基础)
- Oil Deposits(DFS,基础题)
- poj 2676 Sudoku (基础DFS)
- Red and Black(基础DFS)
- poj 3009(dfs基础题)
- hdu 1241(dfs基础题)
- DFS:POJ1190-生日蛋糕(基础搜索)
- 部分和问题(基础DFS)
- HDOJ1016 Prime Ring Problem(基础DFS)
- 算法基础-->图论(BFS,DFS)
- Mysql查询性能优化的心得
- 《计算机视觉-一种现代方法(第2版)》读书笔记一:导论大纲
- angularjs bootstrap 购物车
- ImportError: No module named tensorflow
- JDBC中ResultSet结果集总结(三)
- hdu1242Rescue(dfs基础)
- BZOJ 1001 狼抓兔子 平面图最小割
- codility CountDiv
- Big Data Secuity Solution
- 自定义控件三部曲之绘图篇(七)——Paint之函数大汇总
- 【专题】display: inline | block | inline-block;
- Spring Getting Started (1):构建一个RESTful的web服务
- Ubuntu开源oj的简单配置
- imageloder