先找到斜线的起始点
然后输出斜线上各点
include <bits\stdc++.h>
typedef long long ll;
using namespace std;
int main() {
int n,i,j,sum,cnt,x,y;
cin>>n;
int a[501][501];
int b[1000][2];
for(i=0;i<n;i++){
for(j=0;j<n;j++) scanf("%d",&a[i][j]);
}
if(n1) cout<<a[0][0];
else{
b[0][0]=b[0][1]=0;
b[2n-2][0]=b[2n-2][1]=n-1;
for(i=1;i<n;i++){
if(i%21){
b[i][0]=0;
b[i][1]=i;
}
else {
b[i][0]=i;
b[i][1]=0;
}
}
for(i=n;i<2*n-2;i++){
if(i%20){
b[i][0]=n-1;
b[i][1]=i-n+1;
}
else {
b[i][0]=i-n+1;
b[i][1]=n-1;
}
}
cout<<a[0][0]<<" ";
for(i=2;i<=n;i++){
sum=i;
cnt=0;
x=b[i-1][0];
y=b[i-1][1];
if(i%20){
while(sum--){
printf("%d ",a[x-cnt][y+cnt]);
cnt--;
}
}
else {
while(sum--){
printf("%d ",a[x-cnt][y+cnt]);
cnt++;
}
}
}
for(i=n+1;i<n*2-1;i++){
sum=2*n-i;
cnt=0;
x=b[i-1][0];
y=b[i-1][1];
if(i%2==0){
while(sum--){
printf("%d ",a[x-cnt][y+cnt]);
cnt--;
}
}
else {
while(sum--){
printf("%d ",a[x-cnt][y+cnt]);
cnt++;
}
}
}
cout<<a[n-1][n-1];
}
return 0;
}