题目描述
蛇形矩阵是由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
题解
下面展示本人题解思路代码。
const rl = require("readline").createInterface({ input: process.stdin })
var iter = rl[Symbol.asyncIterator]()
const readline = async () => (await iter.next()).value
void async function () {
//接收行数
let num = await readline()
let arr = []
//定义二维数组
for (let i = 0; i < num; i++) {
arr[i] = new Array()
}
//具体过程
for (let i = 0; i < num; i++) {
if (i == 0) {
for (let j = 0; j < num; j++) {
//先生成第一行数
arr[i][j] = ((j + 2) * (j + 1)) / 2
}
}
if (i > 0) {
//借助去掉前一行首个元素后剩余元素均-1来得到第i行元素
arr[i] = arr[i - 1].slice(1)
for (let j = 0; j < (num - i); j++) {
arr[i][j] -= 1
}
}
//输出每一行
console.log(arr[i].join(' '))
}
}()
文章系原创,在阅读过程中如若有误,劳请指正;如若有妙解、疑惑也欢迎大家和我交流,感谢!