求助
查看原帖
求助
685195
vincent125楼主2023/1/17 14:40
 using namespace std;
 char a[9551][9551];
 int b[9419][9149],c[9419][9914],ji[9419][8149],xy=1,kk=0,n,m;
 int dx[4]={0,0,-1,1};//4410
 int dy[4]={-1,1,0,0};
 int xx,yy;
 struct w{
     int x1;
     int y1;
     int x2;
     int y2;
 };
 w w1 ,w2, w3,oo[999],io[999];
 void abc(){
     queue<w> k;
     w1.x1=0,w1.y1=0,w1.y2=0,w1.x2=0;
     oo[0]=w1;
     k.push(w1);
     ji[0][0]=1; 
     while(!k.empty()){
     w2=k.front();
     k.pop();
     if(w2.x1==n-1&&w2.y1==m-1){ 
     xx=oo[xy-1].x2,yy=oo[xy-1].y2;
     io[kk++]=oo[xy-1];
     for(int mm=xy-1;mm>=0;mm--){
             if(oo[mm].x1==xx&&oo[mm].y1==yy){
                 io[kk++]=oo[mm];                                         
                 xx=oo[mm].x2,yy=oo[mm].y2;
              }
          }

          for(int p=kk-1;p>=0;p--){
             cout<<io[p].x1+1<<" "<<io[p].y1+1<<endl;
          }

             return;
         }
     for(int i=0;i<4;i++){
         int xx=	w2.x1+dx[i];int yy= w2.y1+dy[i];
             if(yy>=0&&yy<=m-1&&xx>=0&&xx<=n-1&&!ji[xx][yy]&&a[xx][yy]=='.'){
                 w3.x1=xx,w3.y1=yy,w3.x2=w2.x1,w3.y2=w2.y1;
                 k.push(w3);
                 ji[xx][yy]=1;
                 oo[xy]=w3;
                 xy++;
             }
         }
 }
 }
 int main(){
     cin>>n>>m;
 for(int i=0;i<n;i++)	{
     for(int j=0;j<m;j++){
         cin>>a[i][j];
     }
 }
 abc();
 }```
2023/1/17 14:40
加载中...