首页 > 试题广场 >

回型矩阵

[编程题]回型矩阵
  • 热度指数:9559 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给你一个整数n,按要求输出n∗n的回型矩阵

输入描述:
输入一行,包含一个整数n

1<=n<=19


输出描述:
输出n行,每行包含n个正整数.
示例1

输入

4

输出

1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
n = int(input())
arr =  [ ['']*n for _ in range(n)]
value = 1
i = 0
j = n
while True:
    for x in range(i,j+i):
        arr[i][x] = value
        value += 1
    for y in range(1+i,j+i):
        arr[y][j-1+i] = value
        value += 1
    for y in range(j-1,0,-1):
        arr[j-1+i][y-1+i] = value
        value += 1

    for y in range(j-2,0,-1):
        arr[y+i][i] = value
        value += 1
    j -= 2
    i += 1
    if j<0:
        break
for i in arr:
    print(*i)
    # for j in i:
    #     tem = j if j else "*"
    #     print(f"{tem:<3}",end="")

发表于 2024-09-29 22:43:29 回复(0)
import sys

a = int(input())
a_list = [[0 for _ in range(a)] for _ in range(a)]
count = 1 # 开始数字
up = 0 # 上边界
left = 0 # 左边界
right = a-1 # 右边界
down = a-1 # 下边界
while count <= a*a:
    for i in range(left,right+1):  # 左到右,起点在左上
        a_list[up][i] = count
        count += 1
    up += 1 # 上边界下移(填充完成)
   
    for i in range(up,down+1): # 上到下,起点在右上
        a_list[i][right] = count
        count += 1
    right -= 1  # 右边界左移(填充完成)
   
    for i in range(right,left-1,-1): # 右到左,起点在右下
        a_list[down][i] = count
        count += 1
    down -= 1  # 下边界上移(填充完成)
   
    for i in range(down,up-1,-1): # 下到上,起点在左下
        a_list[i][left] = count
        count += 1
    left += 1  # 左边界右移(填充完成)

for i in range(a):
    print(' '.join(map(str,a_list[i])))
发表于 2024-03-02 08:39:05 回复(0)