重点判断如果又回来了,说明重复来重复去,就是走不出迷宫
vis[x][y]
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char Map[15][15];
int vis[15][15];
int Find(int x,int y)
{
memset(vis, 0, sizeof(vis));
while(1)
{
if( x<0 || x>9 || y < 0 || y > 9)
{
return 1;
}
if(vis[x][y] == 1)//绕来绕去又绕回来了
{
return 0;
}
vis[x][y] = 1;
if(Map[x][y]=='U')
x--;
if(Map[x][y]=='L')
y--;
if(Map[x][y]=='R')
y++;
if(Map[x][y]=='D')
x++;
}
}
int main()
{
int ans=0;
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
cin>>Map[i][j];
}
}
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
ans+=Find(i,j);
}
}
printf("%d\n",ans);
return 0;
}
if也可以写成这样
switch(mmap[i][j])
{
case 'U': i--;break;
case 'L': j--;break;
case 'R': j++;break;
case 'D': i++;break;
default: break;
}