社区讨论

求助站外题

灌水区参与者 12已保存回复 28

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
28 条
当前快照
1 份
快照标识符
@m05z7zy0
此快照首次捕获于
2024/08/23 08:31
2 年前
此快照最后确认于
2025/11/05 02:07
4 个月前
查看原帖
CPP
#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分,求助

回复

28 条回复,欢迎继续交流。

正在加载回复...