上午(3h)
奇怪的电梯
主要思路:
下午(3.5h)
陨石雨
主要思路:
晚上(1.5h)
玉米迷宫
代码写了很长可还是没有ac
#include<stdio.h>
char map[500][500];
int book[1000][1000];
struct queue
{
int x;
int y;
int time;
}que[160010];
int n,m;
int head,tail;
int sx,sy;
int tx,ty;
int nx,ny;
int next[100][100]={{1,0},{-1,0},{0,1},{0,-1}};
void check(int *x,int *y)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(map[i][j]==map[*x][*y]&&i!=*x&&j!=*y)
{
*x=i;
*y=j;
return;
}
}
void bfs(int sx,int sy)
{
tail++;
que[head].x=sx;
que[head].y=sy;
que[head].time=0;
while(head<tail)
{
if(map[que[head].x][que[head].y]>='A'&&map[que[head].x][que[head].y]<='Z')
{
check(&que[head].x,&que[head].y);
}
if(map[que[head].x][que[head].y]=='=')
{
printf("%d",que[head].time);
return;
}
for(int i=0;i<4;i++)
{
tx=que[head].x+next[i][0];
ty=que[head].y+next[i][1];
if(map[tx][ty]=='#')
continue;
if(tx<0||tx>=n||ty<0||ty>=m)
continue;
if(book[tx][ty]==0){
book[tx][ty]=1;
que[tail].x=tx;
que[tail].y=ty;
que[tail].time=que[head].time+1;
tail++;
}
}
head++;
}
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
{for(int j=0;j<m;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='@')
{
sx=i;
sy=j;
book[sx][sy]=1;
}
}
getchar();
}
bfs(sx,sy);
return 0;
}