求助站外题
  • 板块灌水区
  • 楼主yinzifan
  • 当前回复28
  • 已保存回复28
  • 发布时间2024/8/23 08:31
  • 上次更新2024/8/23 11:14:44
查看原帖
求助站外题
996790
yinzifan楼主2024/8/23 08:31
#include<iostream>
using namespace std;
int b[1005][1005],qx[1000005],qy[1000005],f,r;
bool vis[1005][1005];
int n,m;
int dx[]={-2,-1,1,2},dy[]={1,2,2,1};
int a[100005];
void bfs(int x,int y){
    qx[r]=x;
    qy[r++]=y;
    vis[x][y]=1;
    while(f<r){
        int tx=qx[f],ty=qy[f++];
        for(int i=0;i<=3;i++){
            int xx=tx+dx[i];
            int yy=ty+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&vis[xx][yy]==0){
                qx[r]=xx;
                qy[r++]=yy;
                b[xx][yy]=i;
            }
        }
    }
}
int main(){
    cin>>n>>m;
    bfs(1,1);
    int x=n,y=m,cnt=0;
    while(x>1&&y>1){
        a[++cnt]=b[x][y];
        x=x-dx[b[x][y]];
        y=y-dx[b[x][y]];
    }
    for(int i=cnt;i>=1;i--){
        cout<<a[i]<<" ";
    }
}

如图,从左下角A点出发,马只能向右走,根据马走日字的规则,究竟如何走才能到达右上角B点

输入描述 两个整数x、y,代表右上角B点的坐标,A点默认为(1,1),x,y<=1000

输出描述 马走的路径方向,例如上图路径可表示为4 3 2 4 1 4,但注意,为了保证结果唯一,程序中马尝试各方向的顺序如上图,依次为1、2、3、4.因此上图的正确答案为3 2 4 1 4 4,如果无路可走,则输出-1

样例 输入 5 5 输出 4 1 4 4

0分,求助

2024/8/23 08:31
加载中...