//步骤一:定义一个二维数组
//首先定义一个常量n,用于规定创建一个n行n列的九宫格,并且n只能是奇数,偶数无法创建九宫格,这里可以使用断言的方式进行判断,代码如下所示:
//n行n列的九宫格
let n = 3
assert(n % 2 != 0, "n必须是奇数")
//其次定义一个整型的二维数组,并且将所有的元素初始为0,代码如下所示:
//定义一个二维数组用于存放1~n*n个数字
var array = [[Int]](count: n , repeatedValue: [Int](count:n , repeatedValue: 0))
//步骤二:将1~n*n个数字放入九宫格
//首先定义两个整型变量row和col分别记录行号和列号也就是二维数组的下标,从第零行的中间一个空格开始放入数字,因此row和col分别初始化为0和n/2,代码如下所示:
//从0行n/2列开始放第一个数字
var row = 0
var col = n/2
//然后使用for循环依次将1~n*n个数字放入二维数组array,注意区分行越界、列越界、行列同时越界以及冲突这四种情况的处理,代码如下所示:
//依次将1~n*n个数字放入二维数组array
for var; i = 1; i <= n*n; i++ {
array[row][col] = i
row--
col++
if row < 0 && col >= n {//行列都越界
row += 2
col--
}else if col >= n {//列越界
col = 0
}else if row < 0 {//列越界
row = n-1
}else if array[row][col] != 0 {//冲突
row += 2
col--
}
-
-