目标
输入数字5,输出
```
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
```
输入数字6,输出
```
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
```
算法
fun outputHui(num: Int) {
val huiArray = Array(num) { IntArray(num) }
var minX = 0 //x轴最小下标
var minY = 0 //y轴最小下标
var maxX: Int = num - 1 //x轴最大下标
var maxY: Int = num - 1 //y轴最大下标
var counter = 0 //计数
while (minX <= maxX) {
// ------>
for (i in minX..maxX) {
huiArray[minY][i] = ++counter
}
// |
// |
// |
// |
// V
minY++
for (i in minY..maxY) {
huiArray[i][maxX] = ++counter
}
// <------
maxX--
for (i in maxX downTo minX) {
huiArray[maxY][i] = ++counter
}
// ^
// |
// |
// |
// |
maxY--
for (i in maxY downTo minY) {
huiArray[i][minX] = ++counter
}
minX++
}
// 输出
for (i in 0 until huiArray.size) {
for (j in 0 until huiArray[i].size) {
System.out.print("${huiArray[i][j]} ");
}
System.out.println();
}
}