HJ35 蛇形矩阵 ●
描述
蛇形矩阵是由 1 开始的自然数依次排列成的一个矩阵上三角形。
例如,当输入5时,应该输出的三角形为:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
输入描述:
输入正整数N(N不大于100)
输出描述:
输出一个N行的蛇形矩阵。
示例
输入:
4
输出:
1 3 6 10
2 5 9
4 8
7
题解
1. 数学
根据数学规律,一行一行的计算并输出。
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin >> n;
int matrix[n][n];
for(int i = 0; i < n; ++i){
int num = i+2;
matrix[i][0] = (i+1)*i/2 + 1; // 第一列
cout << matrix[i][0] << " ";
for(int j = 1; j < n-i; ++j){ // 某一行
matrix[i][j] = matrix[i][j-1] + num;
++num; // 加数
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
2. 模拟
模拟蛇形矩阵的生成方法。
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin >> n;
int matrix[n][n];
int num = 1;
for(int i = 1; i <= n; ++i){ // 蛇形矩阵生成
int row = i - 1;
int col = 0;
for(int j = 1; j <= i; ++j){
matrix[row--][col++] = num++;
}
}
for(int i = 0; i < n; ++i){ // 输出
for(int j = 0; j < n-i; ++j){
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}