用go实现螺旋矩阵,要求输出N×N的螺旋方阵。每行N个数字,每个数字占4位。 N小于10
时间: 2024-03-20 08:39:59 浏览: 20
好的,以下是用Go语言实现N×N的螺旋矩阵并输出的代码:
```go
package main
import "fmt"
func spiralMatrix(n int) {
// 初始化矩阵
matrix := make([][]int, n)
for i := range matrix {
matrix[i] = make([]int, n)
}
// 定义变量
num := 1
left, right, top, bottom := 0, n-1, 0, n-1
// 循环填充矩阵
for left <= right && top <= bottom {
for i := left; i <= right; i++ {
matrix[top][i] = num
num++
}
for i := top + 1; i <= bottom; i++ {
matrix[i][right] = num
num++
}
if left < right && top < bottom {
for i := right - 1; i > left; i-- {
matrix[bottom][i] = num
num++
}
for i := bottom; i > top; i-- {
matrix[i][left] = num
num++
}
}
left++
right--
top++
bottom--
}
// 输出矩阵
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
fmt.Printf("%4d", matrix[i][j])
}
fmt.Println()
}
}
func main() {
spiralMatrix(5)
}
```
在这个示例代码中,我们定义了一个名为 `spiralMatrix` 的函数,它接受一个整数参数 `n`,用于指定要生成的螺旋矩阵的大小。首先我们初始化一个 `n×n` 的矩阵,然后定义变量 `num` 来表示当前要填充的数字。接着我们用 `left`、`right`、`top` 和 `bottom` 四个变量来表示当前矩阵的边界,然后在循环中逐个填充矩阵。
填充的过程中,我们先按顺序填充矩阵的第一行,然后从第二行开始,依次填充每一列的最后一个元素,再填充倒数第二行,以此类推。最后,我们再从右到左、从下到上填充矩阵的剩余部分。
填充完成后,我们再循环输出矩阵,每个数字占据 4 个字符的宽度。
在 `main` 函数中,我们调用 `spiralMatrix` 函数并传入参数 `5`,生成并输出了一个 `5×5` 的螺旋矩阵,你可以修改 `spiralMatrix` 函数中的参数来生成不同大小的矩阵。