【NOI】7218 献给阿尔吉侬的花束
来源:互联网 发布:蜘蛛侠战衣购买淘宝 编辑:程序博客网 时间:2024/04/29 07:07
描述
阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。
迷宫用一个R×C的字符矩阵来表示。字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行。阿尔吉侬在1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。
输入
第一行是一个正整数T(1 <= T <= 10),表示一共有T组数据。
每一组数据的第一行包含了两个用空格分开的正整数R和C(2 <= R, C <= 200),表示地图是一个R×C的矩阵。
接下来的R行描述了地图的具体内容,每一行包含了C个字符。字符含义如题目描述中所述。保证有且仅有一个S和E。
输出
对于每一组数据,输出阿尔吉侬吃到奶酪的最少单位时间。若阿尔吉侬无法吃到奶酪,则输出“oop!”(只输出引号里面的内容,不输出引号)。每组数据的输出结果占一行。
-
隔壁走出迷宫的多组数据版
题目描述没卵用:D
#include<cstdio>#include<cstring>#include<queue>using namespace std;int r,c;int X[4]={0,1,0,-1}, Y[4]={1,0,-1,0}, T,h,l,n,m, x[1603],y[1603], b[1603],f[1603];char C;bool a[203][203];int main(){ scanf("%d",&T); while(T--) { queue<int> x,y,b,f; int n,m; bool v=1; b.push(0);f.push(4); scanf("%d%d",&r,&c); memset(a,0,sizeof(a)); for(int i=1;i<=r;++i) { char C; scanf("%c",&C);//去掉前面的空格 for(int j=1;j<=c;++j) { scanf("%c",&C); if(C=='#') a[i][j]=1; else if(C=='S') {x.push(i);y.push(j);} else if(C=='E') {n=i;m=j;} } } //printf("%d %d\n%d %d\n",x.front(),y.front(),n,m); do { for(int i=0;i<4;++i) if(f.front()!=(i+2)%4) { int xx=x.front()+X[i],yy=y.front()+Y[i]; if(!a[xx][yy]&&xx>=1&&xx<=r&&yy>=1&&yy<=c) { b.push(b.front()+1); x.push(xx);y.push(yy); a[xx][yy]=1;f.push(i); if(xx==n&&yy==m) { printf("%d\n",b.back()); v=0;break; } } } x.pop();y.pop(); b.pop();f.pop(); } while(!x.empty()); if(v) printf("oop!\n"); } return 0;}
0 0
- 【NOI】7218 献给阿尔吉侬的花束
- 7218:献给阿尔吉侬的花束
- OJ 7218 献给阿尔吉侬的花束__广搜
- NoiOpenJudge 2.5 献给阿尔吉侬的花束
- 7218:献给阿尔吉侬的花束( 2.5基本算法之搜索)
- C++广度优先搜索算法之献给阿尔吉侬的花束
- 期末考试-献给阿尔吉侬的花束(算法基础 第10周)
- JS输出100-1000的水仙花束
- 献给心爱的你
- 献给所有的女性
- 献给所有的“日本人”
- 献给八十年代的我们
- 献给我的妻子
- 献给我的父亲!
- 献给团队的每个人!
- 献给坚强的中国
- 献给我们的奥运冠军
- 献给亲爱的你
- 过滤器
- SharpDevelop拾遗
- 复制已知文件夹下所有内容,显示进度
- 继承
- How to configure Gzip for JBoss?---refer
- 【NOI】7218 献给阿尔吉侬的花束
- 【深度学习】基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)
- python elasticsearch的update操作
- Rails send使用
- Spring 利用FactoryBean来配置Bean
- ajax由什么部分组成以及工作步骤,面试会经常问到
- Android Studio SVN配置忽略文件
- EL表达式多条件或判断用法
- 复制已知文件夹工具(显示进度)