1 条题解
-
0
这道题目只需要按照给出的指令,模拟虎头怪走动的位置(撞到墙不移动,只统计撞墙次数),然后判断是哪种情况,输出对应的结果即可。 需要注意的是,这道题目有两个坑点,有比较多的同学掉进去了。
1.可以走到出口,需要输出的步数X是有效步数(撞墙的步数是无效的)。
2.按照从上往下的要求,满足能够从起点走到出口,优先输出。注意,可能一开始撞墙次数超过k,但是能走到终点,也是需要输出
Escaped in X steps!
。#include<bits/stdc++.h> using namespace std; int n,m,k,sx,sy; char a[110][110],s[1010]; int main() { cin>>n>>m>>k; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; if(a[i][j]=='S') { sx=i,sy=j;//获取起点的位置 } } } cin>>s+1; int nowx=sx,nowy=sy,cnt=0; for(int i=1;i<=strlen(s+1);i++) { int nx=nowx,ny=nowy; //根据指令变换位置 if(s[i]=='U') nx--; if(s[i]=='D') nx++; if(s[i]=='L') ny--; if(s[i]=='R') ny++; if(a[nx][ny]=='E')//碰到终点,直接逃出 { printf("Escaped in %d steps!",i-cnt);//注意,输出有效步数,需要减去撞墙的步数 return 0; } if(a[nx][ny]=='#')//碰到墙,统计撞墙次数 { cnt++; } else//没撞到墙更新位置 { nowx=nx,nowy=ny; } } if(cnt>k)//最后撞墙次数>k { printf("Hit wall"); return 0; } //最后没有走出迷宫 printf("Finished at (%d,%d)",nowx,nowy); }
- 1
信息
- ID
- 171
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 21
- 已通过
- 7
- 上传者