1 条题解

  • 0
    @ 2026-10-25 16:05:38

    思路

    在唯一最短解保证下恢复5x5路线及坐标输出。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){int a[5][5];for(auto &row:a)for(int &v:row)cin>>v;int d[5][5],pr[5][5],pc[5][5];memset(d,-1,sizeof(d));queue<pair<int,int>>q;q.push({0,0});d[0][0]=0;int dx[]={1,-1,0,0},dy[]={0,0,1,-1};while(!q.empty()){auto p=q.front();q.pop();for(int k=0;k<4;k++){int x=p.first+dx[k],y=p.second+dy[k];if(x>=0&&x<5&&y>=0&&y<5&&!a[x][y]&&d[x][y]<0){d[x][y]=d[p.first][p.second]+1;pr[x][y]=p.first;pc[x][y]=p.second;q.push({x,y});}}}vector<pair<int,int>>ans;for(int x=4,y=4;;){ans.push_back({x,y});if(x==0&&y==0)break;int xx=pr[x][y],yy=pc[x][y];x=xx;y=yy;}reverse(ans.begin(),ans.end());for(auto p:ans)cout<<'('<<p.first<<", "<<p.second<<")\n";}
    
    • 1

    信息

    ID
    1148
    时间
    1000ms
    内存
    64MiB
    难度
    普及−
    标签
    递交数
    1
    已通过
    1
    上传者