题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
package main
import (
"fmt"
)
func main() {
n := 0
fmt.Scan(&n)
//1. 先生成第一列
firstCo := make([]int, 1)
firstCo[0] = 1
for i := 1; i < n; i++ {
firstCo = append(firstCo, firstCo[i-1]+i)
}
//fmt.Println(firstCo)
//2. 生成每一行
for i := 0; i < n; i++ {
fmt.Printf("%v ", firstCo[i]) //每一行的第一个元素直接打印出来
res := firstCo[i] //将每行的第一个元素存储,目的是为了后面累加计算出该行后面的数字
//有了第一列 根据每一列的第一个数累加得到每一行的数
//假设行号列号都是从1开始a11 表示最开始的第一个元素,也就是 1
//例如第一行的第二个元素是3, a12 = 3 = 第一个元素a11 + 第一行行行号1 (i+1) + 3的列号2减一(j)
//第二列的第二个元素是5, a22 = 5 = a21 + 2 + (2-1)
//第二列的第三个元素9, a23 = 9 = a22 + 2 +(3-1)
for j := 1; j < n-i; j++ {
res = res+i+1+j
fmt.Printf("%v ", res)
}
fmt.Println()
}
}


