|
|
|
|
#include<cstdio>
|
|
|
|
|
#include<iostream>
|
|
|
|
|
#define N 5
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
struct note
|
|
|
|
|
{
|
|
|
|
|
int x,y,pre;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬ǰһ<C7B0><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
} que[100];
|
|
|
|
|
|
|
|
|
|
int maze[N][N];
|
|
|
|
|
int Nx[4]= {1,-1,0,0}; //x<><78><EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD>
|
|
|
|
|
int Ny[4]= {0,0,-1,1}; //y<><79><EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD>
|
|
|
|
|
int start=0,end=1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void print(int s) {
|
|
|
|
|
if(que[s].pre!=-1) {
|
|
|
|
|
//<2F>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
print(que[s].pre);//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ǰһ<C7B0><D2BB><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>
|
|
|
|
|
cout<<"("<<que[s].x<<", "<<que[s].y<<")"<<endl;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB>㷨
|
|
|
|
|
void bfsMaze(int x,int y) {
|
|
|
|
|
que[start].pre=-1;
|
|
|
|
|
que[start].x=x;
|
|
|
|
|
que[start].y=y;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5>
|
|
|
|
|
while(start<end) {
|
|
|
|
|
//̽<><CCBD><EFBFBD>ĸ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
for(int i=0; i<4; i++) {
|
|
|
|
|
int a=Nx[i]+que[start].x;
|
|
|
|
|
int b=Ny[i]+que[start].y;
|
|
|
|
|
if(a<0 || b<0 || a>=N || b>=N || maze[a][b])//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ
|
|
|
|
|
continue;
|
|
|
|
|
else {
|
|
|
|
|
maze[a][b]=-1;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ʹ<EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
que[end].pre=start;
|
|
|
|
|
que[end].x=a;
|
|
|
|
|
que[end].y=b;
|
|
|
|
|
end++;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(a==N-1 && b==N-1)
|
|
|
|
|
print(start);
|
|
|
|
|
}
|
|
|
|
|
start++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
int main() {
|
|
|
|
|
// <09><><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>ͼ
|
|
|
|
|
// for(i=0;i<N;i++)
|
|
|
|
|
// for(j=0;j<N;j++)
|
|
|
|
|
// scanf("%d",&maze[i][j]);
|
|
|
|
|
|
|
|
|
|
int i,j;
|
|
|
|
|
//<2F><><EFBFBD>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
FILE *fpRead=fopen("input.txt","r"); //<2F><><EFBFBD><EFBFBD>"r"<22>DZ<EFBFBD>ʾ <20><>
|
|
|
|
|
if(fpRead==NULL) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
for( i=0; i<5; i++) {
|
|
|
|
|
for(j=0; j<5; j++) {
|
|
|
|
|
fscanf(fpRead,"%d",&maze[i][j]);
|
|
|
|
|
printf("%d ",maze[i][j]);
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|
|
|
|
cout<<"(0, 0)"<<endl;
|
|
|
|
|
bfsMaze(0,0);
|
|
|
|
|
cout<<"("<<N-1<<", "<<N-1<<")"<<endl;
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|