方法:1,最短路就用简单的广搜就可以了。
2,左优先的步数是由先左,往前,往右,向后的顺序走出来的。
这里不用担心会出现死循环的情况,在这里不会出现的。
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n,m;
char map[44][44];
bool vist[44][44];
int sx,sy,ex,ey;
int ans_left,ans_right,ans;
struct my
{
int x,y;
int s;
};
int a[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
int b[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
bool in(int x,int y)
{
return x>=1 && x<=n && y>=1 && y<=m;
}
void ldfs(int i,int j, int direction,int step)
{
if (map[i][j]=='E')
{
ans_left=step;
return;
}
int l=(direction+1)%4;
int r=(4+direction-1)%4;
int h=(2+direction)%4;
int x,y;
x=i+b[l][0];
y=j+b[l][1];
if (in(x,y) && map[x][y]!='#')
{
ldfs(x,y,l,step+1);
return ;
}
x=i+b[direction][0];
y=j+b[direction][1];
if (in(x,y) && map[x][y]!='#')
{
ldfs(x,y,direction,step+1);
return ;
}
x=i+b[r][0];
y=j+b[r][1];
if (in(x,y) && map[x][y]!='#')
{
ldfs(x,y,r,step+1);
return;
}
x=i+b[h][0];
y=j+b[h][1];
ldfs(x,y,h,step+1);
return;
}
void rdfs(int i,int j, int direction,int step)
{
if (map[i][j]=='E')
{
ans_right=step;
return;
}
int l=(direction+1)%4;
int r=(4+direction-1)%4;
int h=(2+direction)%4;
int x,y;
x=i+b[r][0];
y=j+b[r][1];
if (in(x,y) && map[x][y]!='#')
{
rdfs(x,y,r,step+1);
return;
}
x=i+b[direction][0];
y=j+b[direction][1];
if (in(x,y) && map[x][y]!='#')
{
rdfs(x,y,direction,step+1);
return ;
}
x=i+b[l][0];
y=j+b[l][1];
if (in(x,y) && map[x][y]!='#')
{
rdfs(x,y,l,step+1);
return ;
}
x=i+b[h][0];
y=j+b[h][1];
rdfs(x,y,h,step+1);
return;
}
void bfs()
{
int i,j,k;
my cur;
cur.x=sx;
cur.y=sy;
cur.s=1;
queue q;
q.push(cur);
memset(vist,false,sizeof(vist));
vist[sx][sy]=true;
while (!q.empty())
{
my d=q.front();
//cout<>t;
while (t--)
{
cin>>m>>n;
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
cin>>map[i][j];
if (map[i][j]=='S')
{
sx=i;
sy=j;
//cout<
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 7324 | Accepted: 3196 |
Description
Input
Output
Sample Input
2 8 8 ######## #......# #.####.# #.####.# #.####.# #.####.# #...#..# #S#E#### 9 5 ######### #.#.#.#.# S.......E #.#.#.#.# #########
Sample Output
37 5 5 17 17 9
Source