给定n,输出如下例所示规律的斜之字形数组。 3*3的斜之字形数组如下: 1 2 6 3 5 7 4 8 9 4*4的斜之字形数组如下: 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16 5*5的斜之字形数组如下: 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 输入 一个正整数n 输出 n*n的有数字1~n*n填充的斜之字形数组。每列按最大列宽靠右对齐,列之间一个空格分隔。 样例输入 Copy 6 样例输出 Copy 1 2 6 7 15 16 3 5 8 14 17 26 4 9 13 18 25 27 10 12 19 24 28 33 11 20 23 29 32 34 21 22 30 31 35 36
时间: 2024-01-03 18:04:29 浏览: 24
以下是一个 Python3 的实现,使用了一个二维数组存储斜之字形数组,然后按照要求输出即可:
```python
n = int(input()) # 输入正整数n
arr = [[0] * n for _ in range(n)] # 初始化斜之字形数组
# 填充斜之字形数组
i, j, num = 0, 0, 1
while num <= n * n:
arr[i][j] = num
num += 1
if (i + j) % 2 == 0: # 向右上方走
if j == n - 1:
i += 1
elif i == 0:
j += 1
else:
i -= 1
j += 1
else: # 向左下方走
if i == n - 1:
j += 1
elif j == 0:
i += 1
else:
i += 1
j -= 1
# 输出斜之字形数组
col_width = len(str(n * n)) # 最大列宽
for i in range(n):
for j in range(n):
print(str(arr[i][j]).rjust(col_width), end=' ')
print()
```
输出结果与题目要求的格式完全一致。