题解 | #蛇形矩阵#笨方法
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
package main
import (
"fmt"
)
func main() {
// 获取输入
var num int
fmt.Scan(&num)
// 整个多维数组表示结果
var res [][]int
// 笨蛋方法计算出多维数组的每一行的第一个值
// 这个步骤放在下面大循环里也行
beginning:=[]int{1}
for i:=1;i<num;i++{
value:=beginning[i-1]+i
beginning = append(beginning,value)
}
// 开一个for循环对数组进行填充
// 一共是num次外层循环
for i:=0;i<num;i++{
var child []int
// 内层循环则是产生每一行的具体结果
for k:=0;k<num-i;k++{
if k==0{
// 第一个值我们从先前的beginning里面取
child = append(child, beginning[i])
// fmt.Println("a",child)
}else{
// 后面的值则符合“前一个值+k+1+i”的规律
child = append(child, child[k-1]+k+1+i)
// fmt.Println("b",child)
}
}
// 得出一整行数字之后加入结果之中
res = append(res, child)
// fmt.Println(res)正确
}
// 遍历一下结果数组
for i:=0;i<num;i++{
for _,v:=range res[i]{
fmt.Printf("%d ",v)
}
fmt.Print("\n")
}
}
查看15道真题和解析