codeup27973 斜线展开
时空限制 1000ms/128MB
题目描述
将方阵从左上角开始分别按左下和右上两种方式展开,数据间隔一个空格。
输入
共输入n+1行数据
第一行输入整数n(1<=n<=20)
第2~n+1行,每行n个整数
输出
一行数据,n*n个整数,按输入方阵从左上角开始,向右上和左下方向展开,每个数字之后有一个空格。
样例输入
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
样例输出
1 5 2 9 6 3 13 10 7 4 14 11 8 15 12 16
1 2 5 3 6 9 4 7 10 13 8 11 14 12 15 16
代码
#include<iostream>
using namespace std;
const int N = 25;
int a[N][N];
int main(){
int n;
cin>>n;
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++) cin>>a[i][j];
for (int j=2; j<=2*n; j++) //枚举行列之和
for (int i=n; i>=1; i--) //枚举行
if (j-i>=1 && j-i<=n) cout<<a[i][j-i]<<" ";
cout<<endl;
for (int j=2; j<=2*n; j++)
for (int i=1; i<=n; i++)
if (j-i>=1 && j-i<=n) cout<<a[i][j-i]<<" ";
cout<<endl;
return 0;
}