delete pics to save space
This commit is contained in:
64
history_source/信息学奥赛一本通/2.8.8.cpp
Normal file
64
history_source/信息学奥赛一本通/2.8.8.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
bool Map[5][5];
|
||||
struct BFS
|
||||
{
|
||||
int x,y,last;
|
||||
};
|
||||
bool che(int x,int y)
|
||||
{
|
||||
if(x<0||x>4) return 0;
|
||||
if(y<0||y>4) return 0;
|
||||
return Map[x][y];
|
||||
}
|
||||
BFS bfs[30];
|
||||
int front=0,tail=0;
|
||||
void print(int n)
|
||||
{
|
||||
if(n==-1) return;
|
||||
print(bfs[n].last);
|
||||
printf("(%d,%d)\n",bfs[n].y,bfs[n].x);
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int dx[4]={0,0,-1,1},
|
||||
dy[4]={-1,1,0,0};
|
||||
for(int i=0;i<5;i++)
|
||||
for(int j=0;j<5;j++)
|
||||
{
|
||||
cin>>Map[j][i];
|
||||
Map[j][i]=!Map[j][i];
|
||||
}
|
||||
bfs[tail].x=bfs[tail].y=0;
|
||||
bfs[tail].last=-1;
|
||||
tail++;
|
||||
while(tail-front>0)
|
||||
{
|
||||
for(int i=0;i<4;i++)
|
||||
{
|
||||
if(che(bfs[front].x+dx[i],bfs[front].y+dy[i]))
|
||||
{
|
||||
Map[bfs[front].x+dx[i]][bfs[front].y+dy[i]]=0;
|
||||
bfs[tail]=bfs[front];
|
||||
bfs[tail].last=front;
|
||||
bfs[tail].x+=dx[i];
|
||||
bfs[tail].y+=dy[i];
|
||||
if(bfs[tail].x==4&&bfs[tail].y==4)
|
||||
{
|
||||
print(tail);
|
||||
return 0;
|
||||
}
|
||||
tail++;
|
||||
}
|
||||
}
|
||||
front++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
0 1 0 0 0
|
||||
0 1 0 1 0
|
||||
0 0 0 0 0
|
||||
0 1 1 1 0
|
||||
0 0 0 1 0
|
||||
*/
|
Reference in New Issue
Block a user