NoiOpenJudge 2.5 献给阿尔吉侬的花束
来源:互联网 发布:ios 开发判断网络 编辑:程序博客网 时间:2024/04/28 00:44
总时间限制: 100ms 内存限制: 65536kB
描述
阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。
迷宫用一个R×C的字符矩阵来表示。字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行。阿尔吉侬在1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。
输入
第一行是一个正整数T(1 <= T <= 10),表示一共有T组数据。
每一组数据的第一行包含了两个用空格分开的正整数R和C(2 <= R, C <= 200),表示地图是一个R×C的矩阵。
接下来的R行描述了地图的具体内容,每一行包含了C个字符。字符含义如题目描述中所述。保证有且仅有一个S和E。
输出
对于每一组数据,输出阿尔吉侬吃到奶酪的最少单位时间。若阿尔吉侬无法吃到奶酪,则输出“oop!”(只输出引号里面的内容,不输出引号)。每组数据的输出结果占一行。
#include <iostream>#include <memory.h>using namespace std;int t,n,m,maxi,a[100005],b[100005],step[100005],map[1005][1005],dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};bool used[1005][1005];char c;int main(){ int i,j,k,head,tail,x1,y1,x2,y2,tx,ty; cin>>t; for(k=1;k<=t;k++) { cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { cin>>c; if(c=='.') map[i][j]=0; else if(c=='#') map[i][j]=1; else if(c=='S') { map[i][j]=0; x1=i; y1=j; } else if(c=='E') { map[i][j]=0; x2=i; y2=j; } } head=1; tail=1; maxi=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(step,0,sizeof(step)); memset(used,true,sizeof(used)); a[head]=x1; b[head]=y1; used[x1][y1]=false; while(head<=tail) { for(i=0;i<=3;i++) { tx=a[head]+dx[i]; ty=b[head]+dy[i]; if(tx>0&&tx<=n&&ty>0&&ty<=m&&used[tx][ty]&&map[tx][ty]==0) { a[++tail]=tx; b[tail]=ty; step[tail]=step[head]+1; used[tx][ty]=false; if(tx==x2&&ty==y2&&step[tail]>maxi)maxi=step[tail]; } } head++; } if(maxi!=0)cout<<maxi<<endl; else cout<<"oop!"<<endl; }}
0 0
- NoiOpenJudge 2.5 献给阿尔吉侬的花束
- 7218:献给阿尔吉侬的花束
- 【NOI】7218 献给阿尔吉侬的花束
- 7218:献给阿尔吉侬的花束( 2.5基本算法之搜索)
- OJ 7218 献给阿尔吉侬的花束__广搜
- C++广度优先搜索算法之献给阿尔吉侬的花束
- 期末考试-献给阿尔吉侬的花束(算法基础 第10周)
- NoiOpenJudge 2.5 马走日
- NoiOpenJudge 2.5 城堡问题
- NoiOpenJudge 2.5 Lake Counting
- NoiOpenJudge 2.5 红与黑
- NoiOpenJudge 1.5津津的储蓄计划
- JS输出100-1000的水仙花束
- NoiOpenJudge 1.13 数根
- NoiOpenJudge 2.2 Pell数列
- 献给心爱的你
- 献给所有的女性
- 献给所有的“日本人”
- vMatrix 1009
- 华为编码规范
- Etcd架构与实现解析
- Unity+Vuforia开发增强现实(AR)教程——识别图的那些坑
- Mysql 主从
- NoiOpenJudge 2.5 献给阿尔吉侬的花束
- EXCEL实用技巧
- Jni基础开发入门(五)
- 找出缺失的整数
- ShapeDrawable资源..
- 07、C语言-关键字
- 总结70
- zhy20161209_Caculator7
- VC ++ 利用系统函数 QueueUserWorkItem 实现线程例子