#include<bits/stdc++.h>
using namespace std;
int n;
int grid[205][205];
int st[205][205];
int path_a[40000];
int path_b[40000];
int cnt_a;
int cnt_b;
void bfs(){
int i,j,k;
queue<pair<pair<int ,int >,int >> s;//存一下有的位置
path_a[cnt_a++]=grid[1][1];//0 xia 1you 2shang 3zuo
path_b[cnt_b++]=grid[n][n];
s.push({{1,1},0});
st[n][n]=1;
st[1][1]=1;
int qy[4]={0,1,0,-1};
int qx[4]={1,0,-1,0};
while(s.size()){
auto au=s.front();
s.pop();
auto auu= au.first;
int x=auu.first;
int y=auu.second;
int f=au.second;
int xx=x+qx[f];
int yy=y+qy[f];
if(xx<1||yy<1||xx>n||yy>n||st[xx][yy]==1){
f++;
f=f%4;
xx=x+qx[f];
yy=y+qy[f];
}
if(st[xx][yy]==0){
st[xx][yy]=1;
s.push({{xx,yy},f});
path_a[cnt_a++]=grid[xx][yy];
}
if(st[n+1-xx][n+1-yy]==0){
path_b[cnt_b++]=grid[n+1-xx][n+1-yy];
st[n+1-xx][n+1-yy]=1;
}
}
for(i=0;i<cnt_a;i++){
cout<<path_a[i]<<" ";
}
cout<<endl;
for(i=0;i<cnt_b;i++){
cout<<path_b[i]<<" ";
}
}
int main(){
int i,j,k;
cin>>n;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cin>>grid[i][j];
}
}
bfs();
return 0;
}
sdut补题 Ginger的影分身
最新推荐文章于 2024-07-14 15:36:20 发布