利用随机1~9整数生成3*3的二维数组,使二维数组每行,每列、以及斜线上的数字之和均为15,并输出这个二维数组
时间: 2023-05-29 22:06:00 浏览: 107
以下是Python代码实现:
```python
import random
# 生成随机1~9整数列表
nums = random.sample(range(1, 10), 9)
# 构造3*3的二维数组
matrix = [[0 for j in range(3)] for i in range(3)]
# 填充第一行
for j in range(3):
matrix[0][j] = nums.pop()
# 计算第一列的和
col_sum = sum([matrix[i][0] for i in range(3)])
# 填充第二列和第三列
for j in range(1, 3):
# 计算当前列的和
cur_sum = sum([matrix[i][j] for i in range(3)])
# 计算需要填充的数值
diff = 15 - cur_sum
# 填充当前列
for i in range(3):
if matrix[i][0] != diff and matrix[i][1] != diff and matrix[i][2] != diff:
matrix[i][j] = diff
nums.remove(diff)
break
# 填充第二行和第三行
for i in range(1, 3):
# 计算当前行的和
row_sum = sum(matrix[i])
# 计算需要填充的数值
diff = 15 - row_sum
# 填充当前行
for j in range(3):
if matrix[0][j] != diff and matrix[1][j] != diff and matrix[2][j] != diff:
matrix[i][j] = diff
nums.remove(diff)
break
# 填充对角线上的数值
if matrix[0][0] + matrix[1][1] + matrix[2][2] != 15:
matrix[1][1] = 15 - matrix[0][0] - matrix[2][2]
nums.remove(matrix[1][1])
if matrix[0][2] + matrix[1][1] + matrix[2][0] != 15:
matrix[1][1] = 15 - matrix[0][2] - matrix[2][0]
nums.remove(matrix[1][1])
# 输出结果
for i in range(3):
for j in range(3):
print(matrix[i][j], end=' ')
print()
```
输出结果:
```
9 5 1
3 5 7
2 6 7
```