描述
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
例如,当输入5时,应该输出的三角形为:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
输入描述:
输入正整数N(N不大于100)
输出描述:
输出一个N行的蛇形矩阵。
示例1
输入:4
输出:
1 3 6 10 2 5 9 4 8 7
具体代码(数学规律解法):
#include <stdio.h>
//数学规律解法
int main() {
int a[100][100]; //题中所说N不大于100,因此可以直接粗暴创建一个最大的固定数组
int i, j;
int N;
while (scanf("%d", &N) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
for (i = 0; i < N; i++) { //行
for (j = 0; j < N-i; j++) { //列
if (j == 0) { //需要确定每一行的第一个数字,并以此确定该行的后续数字
if (i==0) {
a[i][j]=1; //确定a[0][0]
}else{
a[i][j] = a[i - 1][j] + i; //第i行的第一个数字=上一行的第一个数字+行数
}
} else {
a[i][j] = a[i][j - 1] + i + j + 1; //i行j列数字=前一个数字+行数+列数+1
}
}
}
}
for(i=0;i<N;i++){ //输出
for(j=0;j<N-i;j++){
printf("%d ",a[i][j]);
}
printf("\n"); //这一行的目的:j循环结束,自动换行入下一行,如果没有,所有数字只会在同一行输出
}
return 0;
}