编程题走迷宫_迷宫--小学生编程竞赛题目(两种解法,一种简单的推荐)

迷宫是长方形的,有

n

m

列个格子。一共有

3

类格子,空地用字符’.’

表示,墙壁用’#’表示,陷阱用’*’表示。

特别地,迷宫中有两个特殊的格子:起点用’S’表示;终点用’E’表示。

起点和终点都是空地。(’S’和’E’均为大写字母)

鹏鹏的任务是:从起点出发,沿着某条路径,走到终点。

游戏对路径的要求有三条:每次只能向相邻格子(上/下/左/右)移动一步;

不能经过墙壁(即可以经过空地和陷阱);不能走出迷宫边界。

聪明的你请告诉鹏鹏,他能完成任务吗?如果能,鹏鹏能否不经过任何陷阱

就完成任务呢?

【输入文件】

文件名:labyrinth.in文件中第一行为两个整数

n,m(2≤n,m≤7)。

接下来有 n 行,每行是一个长度为

m

的字符串,依次表示迷宫的每一行格子。

【输出文件】

文件名:labyrinth.out文件仅有一行,是一个字符串。

如果鹏鹏可以不经过任何陷阱就到达终点,输出”GOOD”;否则,如果经过

若干陷阱能到达终点,输出”OK”;否则,输出”BAD”。(所有字母均为大写)

【样例输入

1】 34

##.E

S*.#

...*

【样例输出

1】 GOOD

【样例输入

2】 33

##E S*.

#..

【样例输出

2】 OK

【样例解释】

##67

1*5#

234*样例 1 的最优路线为

1->2->3->4->5->6->7,如上图。

2016年11月19日,今天推荐简单优选解法(孩子在听完老师讲解后完成的,思路来自与老师:))。9月18日的那个版本放在后面,做个对比。

#include

#include

using namespace std;

int main()

{

freopen("in.txt","r",stdin);

freopen("out.txt","w",stdout);

char a[9][9];

int i,j,m,n;

bool flag,fl;

flag=true;

fl=false;

cin>>m;

cin>>n;

for(i=1;i<=m;i++){

for(j=1;j<=n;j++){

cin>>a[i][j];

if(a[i][j]=='S'){

a[i][j]='1';

}

}

}

while(flag){

flag=false;

for(i=1;i<=m;i++){

for(j=1;j<=n;j++){

if(a[i][j]=='1'){

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值