杭电 1242题(深度优先搜索)
//此题应该从后往前搜,因为营救者不止一人
#include<stdio.h>
#include<string.h>
int d[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; //设置搜索的4个方向
int m,n,si,sj,sti,stj,flag;
int min;
char map[202][202];
int len[202][202];
void dfs(int a,int b,int t) //传递过来的是Angel的位置
{
int i;
if(a<0||a>=m||b<0||b>=n||t>=min) //如果搜索到这里时间已经比min大了,则不必向下搜索
return;
if(a==si&&b==sj)
{
if(t<min) min=t;
flag=1;
return;
}
if(len[a][b]<=t)
return;
if(len[a][b]>t)
len[a][b]=t; //和做1180的题目一样。。一点没变
for(i=0;i<4;i++)
{
if(map[a+d[i][0]][b+d[i][1]]=='.'||map[a+d[i][0]][b+d[i][1]]=='r')
{
map[a+d[i][0]][b+d[i][1]]='#';
dfs(a+d[i][0],b+d[i][1],t+1);
map[a+d[i][0]][b+d[i][1]]='.';
}
if(map[a+d[i][0]][b+d[i][1]]=='x')
{
map[a+d[i][0]][b+d[i][1]]='#';
dfs(a+d[i][0],b+d[i][1],t+2);
map[a+d[i][0]][b+d[i][1]]='x';
}
}
}
void main()
{
int i,j;
while(scanf("%d%d",&m,&n)==2)
{
if(m==0||n==0)
{
printf("0\n");
}
flag=0;
for(i=0;i<202;i++)
for(j=0;j<202;j++)
len[i][j]=100000;
for(i=0;i<m;i++)
{
getchar();
for(j=0;j<n;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='a') //Angel所在的位置
{
sti=i;
stj=j;
}
if(map[i][j]=='r') //朋友所在的位置
{
si=i;
sj=j;
}
}
}
min=100000;
map[sti][stj]='#';
dfs(sti,stj,0); //将Angel所在的位置传递过去
if(flag==1)
printf("%d\n",min);
if(flag==0)
printf("Poor ANGEL has to stay in the prison all his life.\n");
}
}
转载于:https://www.cnblogs.com/north_dragon/archive/2010/05/04/1727160.html
杭电 1242题(深度优先搜索)相关推荐
- Help Johnny-(类似杭电acm3568题)
Help Johnny(类似杭电3568题) Description Poor Johnny is so busy this term. His tutor threw lots of hard pr ...
- 杭电2317题 Nasty Hacks
/** 杭电2317题 Nasty Hacks讨厌的黑客题目大意:给你三个数 第一数表示是再不做广告的前提下公司的收入为 r 第二数表示在做广告的前提下公司的收入为 e第三数表示做广告的成本为 c*/ ...
- 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂
文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...
- 上班无聊之际就聊聊杭电ACM1002题吧
上班无聊之际就聊聊杭电ACM1002题吧 杭电acm不但对提交的输出格式有严格的要求,而且对代码本身也有要求毕竟我们自己写代码的时候的编译器和它内部的不一定一样是不是.所以就导致了一系列的坑爹事件,先 ...
- 杭电acm2151题java的解法,杭电ACM题型分类
杭电ACM题型分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1 ...
- C#LeetCode刷题-深度优先搜索
深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树 22.2% 中等 99 恢复二叉搜索树 45.1% 困难 100 相同的树 48.1% 简单 101 对称二叉树 42.1% 简单 ...
- 杭电oj1620题c语言答案,杭电oj部分水题 c语言源代码.doc
杭电oj部分水题 c语言源代码 殿剐忱酪短祭幂曝沈脸蛀蓑挞姻扶宠秤蓄幌榆矾巨旷于渍弯史影得熄孟椒菊葫彦籍蛛绊趣庙捣载睹答赊索添垛蝎伙生瞎回悟辅篇狱辗歧病氯急迸怜煽跋屋凡逻甲确烧迟卞姻郸被康少辊蒂刽厂礁 ...
- 杭电oj1062题c语言答案,杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?...
杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?0 问题ProblemDescriptionIgnatiuslikestowritewordsinreve ...
- 杭电60题--part 1 HDU1003 Max Sum(DP 动态规划)
最近想学DP,锻炼思维,记录一下自己踩到的坑,来写一波详细的结题报告,持续更新. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem ...
- 杭电的题,输出格式卡的很严。HDU 1716 排列2
题很简单,一开始写代码,是用整数的格式写的,怎么跑都不对,就以为算法错了,去看大佬们的算法STL全排列:next_permutation(); 又双叒叕写了好几遍,PE了将近次,直到跑了大佬代码发现, ...
最新文章
- java hashmap 无序,【Java】HashMap自定义排序
- php-函数小知识点
- Java实例化对象过程中的内存分配
- C语言深度剖析书籍学习记录 第三章 预处理
- JS Math.sin() 与 Math.cos() 用法
- 深度学习加持的工业AI质检
- 另类保存微信公众平台历史消息的方法 - 星标消息
- iOS设备中的推送(三):页面跳转
- 【蓝桥杯单片机】超声波模块(测距原理,驱动方式)
- 高端的面试从来不会在HashMap的红黑树上纠缠太多
- pku1157-------LITTLE SHOP OF FLOWERS(简单动态规划题:摆放鲜花使审美价值达到最高)...
- PowerDesigner数据模型(CDM—PDM)
- win7 安装英文语言包
- 网站建设中做到需求分析细致,网站优化也就顺理成章了
- Pandas和Matplotlib用excel数据画双y轴折线图
- 单细胞测序系列之三:单细胞转录组测序
- C/C++ FFmepeg Qt音视频开发录屏摄像机
- 解决创建MAVEN工程速度慢的问题
- 记一次固态硬盘数据恢复
- Object(对象)中的属性
热门文章
- 自动垃圾回收学习笔记-我们为什么需要自动垃圾回收
- idm下载工具 Win平台下最好的下载工具 无广告 免打扰 静默下载
- Mac局域网本地库server, CornerStone使用
- 关于Spring,所有的都在这了,具有收藏价值
- 扛住100亿次请求?我们来试一试
- 为什么Uber宣布从Postgres切换到MySQL?
- 惊爆!一行正则表达式引发的 CPU 惨案
- 来,说说什么是运维人的情怀?
- 我们团队一位自学Android的经验总结
- 湖北经济学院计算机专业全国排名,2018年湖北经济学院世界排名、中国排名、专业排名...