题目如下:
机器人走迷宫
迷宫由 N W S E 组成 踩到N向上走一格 踩到W 向左走一格 踩到S向下走一格 踩到E 向右走一格
输入迷宫行数 列数 不大于10 机器人初始列数(注意 这个列数是从1开始数的) 判断能否走出迷宫。能走出输出步数
多组输入 遇 0 0 0 结束输入
例
输入
4 6 5
N N N N S N
N N N S W N
N N S W N N
N S W N N N
3 5 2
N S N N N N
N S W N N N
N E N N N N
0 0 0
输出
7
no
当输入第一组的时候就可以出去并且嗯继续执行,但是当输入第二组样例后,程序就陷入了死循环,cin>>那里应该输入但是却被直接跳过就陷入了死循环了不明白为什么,求大佬指点
我的代码
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
char str[10][10];
while(1)
{
int a,b,c;
cin>>a>>b>>c;
if(a==0&&b==0&&c==0)break;
for(int i=0;i<a;i++)
{
for(int j=1;j<=b;j++)
{
cin>>str[i][j];
}
}
int count,d;
d=count=0;
while(count<=a*b)
{
if(str[d][c]=='N')
{
count++;
d=d-1;
if(d<0)
{
break;
}
}
if(str[d][c]=='S')
{
count++;
d=d+1;
if(d>=a)
{
break;
}
}
if(str[d][c]=='W')
{
count++;
c=c-1;
if(c<0)
{
break;
}
}
if(str[d][c]=='E')
{
count++;
c=c+1;
if(d>b)
{
break;
}
}
}
if(count<=a*b)
{
cout<<count<<endl;
}
else
{
cout<<"no"<<endl;
}
}
system("pause");
return 0;
}
行数3,列数5,但是你输入的矩阵是列数6。
数据给错了,同时while里面第三个if里面应该c<1跳出循环,第四个if应该c>b跳出。
两个原因一起导致了死循环的产生。