题目描述
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入格式
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
输出格式
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
样例输入
复制
5
样例输出
复制
1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
思路:这个题目可以先将每行第一列求出来,然后从最后一行开始一步一步往上推导出来。
#include<iostream>
using namespace std;
const int maxsize = 100;
int main() {
int N;
cin >> N;
int a[maxsize + 1][maxsize + 1]={0};
a[0][0] = 1;
int j = 0;
//先找第一列
for (int i = 1; i <N; i++) {
a[i][j] = (1 + i) * i/ 2+1;
}
for (int i = N - 2; i >=0;i--) {
for (int j = 1; j < N - i; j++) {
a[i][j] = a[i + 1][j - 1] + 1;
}
}
for (int i = 0; i < N; i++) {
cout << a[i][0];
for (int j = 1; j < N - i; j++) {
cout << " " << a[i][j];
}
cout << endl;
}
return 0;
}