算法提高 我们的征途是星辰大海
2017-03-07 10:44
267 查看
最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成。
共有四种方格:
‘.’ 代表空地,curiosity可以穿过它
‘#’ 代表障碍物,不可穿越,不可停留
‘S’ 代表curiosity的起始位置
‘T’ 代表curiosity的目的地
NASA将会发送一系列的命令给curiosity,格式如下:“LRUD”分别代表向左,向右,向上,向下走一步。由于地球和火星之间最近时也有55000000km!所以我们必须提前判断这一系列的指令会让curiosity最终处在什么样的状态,请编程完成它。
输入格式
第一行是一个整数T,代表有几个测试样例
每个测试样例第一行是一个整数N(1<=N<=50))代表迷宫的大小(N*N)。随后的N行每行由N个字符串组成,代表迷宫。接下来的一行是一个整数Q,代表有多少次询问,接下来的Q行每行是一个仅由“LRUD”四个字母的组成的字符串,字符转长度小于1000.
输出格式
对于每个询问输出单独的一行:
“I get there!”:执行给出的命令后curiosity最终到达了终点。
“I have no idea!”:执行给出的命令后curiosity未能到达终点。
“I am dizzy!”:curiosity在执行命令的过程中撞到了障碍物。
“I am out!”:代表curiosity在执行命令的过程中走出了迷宫的边界。
Sample Input
2
2
S.
#T
2
RD
DR
3
S.#
.#.
.T#
3
RL
DDD
DDRR
Sample Output
I get there!
I am dizzy!
I have no idea!
I am out!
I get there!
思路:
找出起点坐标,按照指令走
代码:
共有四种方格:
‘.’ 代表空地,curiosity可以穿过它
‘#’ 代表障碍物,不可穿越,不可停留
‘S’ 代表curiosity的起始位置
‘T’ 代表curiosity的目的地
NASA将会发送一系列的命令给curiosity,格式如下:“LRUD”分别代表向左,向右,向上,向下走一步。由于地球和火星之间最近时也有55000000km!所以我们必须提前判断这一系列的指令会让curiosity最终处在什么样的状态,请编程完成它。
输入格式
第一行是一个整数T,代表有几个测试样例
每个测试样例第一行是一个整数N(1<=N<=50))代表迷宫的大小(N*N)。随后的N行每行由N个字符串组成,代表迷宫。接下来的一行是一个整数Q,代表有多少次询问,接下来的Q行每行是一个仅由“LRUD”四个字母的组成的字符串,字符转长度小于1000.
输出格式
对于每个询问输出单独的一行:
“I get there!”:执行给出的命令后curiosity最终到达了终点。
“I have no idea!”:执行给出的命令后curiosity未能到达终点。
“I am dizzy!”:curiosity在执行命令的过程中撞到了障碍物。
“I am out!”:代表curiosity在执行命令的过程中走出了迷宫的边界。
Sample Input
2
2
S.
#T
2
RD
DR
3
S.#
.#.
.T#
3
RL
DDD
DDRR
Sample Output
I get there!
I am dizzy!
I have no idea!
I am out!
I get there!
思路:
找出起点坐标,按照指令走
代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<string.h> using namespace std; char map[51][51],zl[1001][1001]; int T,n,q,x1,y1; int check() { if (map[x1][y1] == 'T') { cout<<"I get there!"<<endl; return 1; } else if (x1<0||x1>=n||y1<0||y1>=n) { cout<<"I am out!"<<endl; return 1; } else if (map[x1][y1] == '#') { cout<<"I am dizzy!"<<endl; return 1; } return 0; } int main() { int i,j,k,t1,t2; cin>>T; while (T--) { cin>>n; getchar(); for (i=0; i<n; i++) //输入地图 { gets(map[i]); } cin>>q; //q行指令 getchar(); for (i=0; i<q; i++) //q行指令 { gets(zl[i]); } //找出起点左标 for (i=0; i<n; i++) { for (j=0; j<n; j++) { if (map[i][j] == 'S') { x1 = i; y1 = j; } } } t1 = x1; t2 = y1; for (i=0; i<q; i++) { x1 = t1; y1 = t2; for (j=0; j<strlen(zl[i]); j++) { switch (zl[i][j]) { case 'L': //向左列- --y1; if (check()) j=strlen(zl[i])+10; //退出循环 break; case 'R': //向右列+ ++y1; if (check()) j=strlen(zl[i])+10; //退出循环 break; case 'U': //向上行- --x1; if (check()) j=strlen(zl[i])+10; //退出循环 break; case 'D': //向下行+ ++x1; if (check()) j=strlen(zl[i])+10; //退出循环 break; } } if (j == strlen(zl[i])) //说明内循环是执行到底的没有被中断 { cout<<"I have no idea!"<<endl; } } } return 0; }
相关文章推荐
- 蓝桥杯 算法提高 我们的征途是星辰大海
- 蓝桥杯--算法提高 我们的征途是星辰大海 (模拟)
- 算法提高 我们的征途是星辰大海
- 我们的征途是星辰大海
- 我们是程序员,我们的征途是星辰大海
- 我们的征程是星辰大海,迈向不可知的彼岸
- 我们的征程是星辰大海
- “双十一” 已经 7 岁了,但阿里们的征途依旧还有星辰大海
- 技术人攻略访谈三十五-小猴机器人:征途路上,星辰大海
- 蓝桥杯--算法提高 周期字串
- 算法提高 9-1九宫格
- 蓝桥杯算法提高 逆序排列
- 蓝桥杯 ADV-112 算法提高 c++_ch02_01
- 算法-蓝桥杯-算法提高 约数个数 (JAVA)
- 蓝桥杯算法提高 身份证号码升级
- 蓝桥杯算法提高
- 算法-蓝桥杯-算法提高 6-17复数四则运算 (JAVA)
- 逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的
- 蓝桥杯 算法提高 十进制数转八进制数
- 蓝桥杯 算法提高 学霸的迷宫(bfs+方向输出)