社区讨论
求助站外题
灌水区参与者 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 条回复,欢迎继续交流。
正在加载回复...