思路:
1.规律就是每一次斜着的扫描,这些点的坐标和相等; 2.坐标和超过n+1后需要单独考虑;
代码:
#include<bits/stdc++.h>
using namespace std
;
#define p_b(a) push_back(a)
#define rp(i,n) for(int i=0;i<n;i++)
#define rpn(i,n) for(int i=1;i<=n;i++)
const int N
=505;
int mat
[N
][N
];
int main(){
int n
;
cin
>>n
;
rpn(i
,n
) rpn(j
,n
) cin
>>mat
[i
][j
];
vector
<int> v
;
for(int i
=2;i
<=(n
+1);i
++){
rpn(j
,i
-1) v
.p_b(i
&1?mat
[j
][i
-j
]:mat
[i
-j
][j
]);
}
int i
=2;
for(int j
=n
+2;j
<=(n
<<1);j
++,i
++){
for(int k
=i
;k
<=(j
-i
);k
++)
v
.p_b(j
&1?mat
[k
][j
-k
]:mat
[j
-k
][k
]);
}
cout
<<v
[0];
for(int i
=1;i
<v
.size();i
++) cout
<<' '<<v
[i
];
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-488272.html