Posts pythonTip 82 数字漩涡
Post
Cancel

pythonTip 82 数字漩涡

题目描述: 给你一个正整数N,请你输出大小为NxN的数字漩涡。数字漩涡的定义请看下例。 N=3,则输出: 1 2 3 8 9 4 7 6 5

N = 4,则输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7

注意:每行数字之间以一个空格隔开,行尾不要有多余的空格。

示例: 输入: N = 1 输出: 1

分析:

题目中的描述有些问题,数字的排版不是很对,所以我猜了一段时间。

最后发现,原来就是一个蛇形填数问题。 我不给出分析过程,有兴趣的同学可以直接尝试一下。

最后我贴出我的代码。

写的比较糟糕。仅供参考。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
ans = [[0 for _ in range(N)] for i in range(N)]
pre_lst = [(0, 1), (1, 0), (0, -1), (-1, 0)]
def full(a):
    global x, y, t, num
    pre = pre_lst[t%4]
    for i in range(a):
        ans[x][y] = num
        x += pre[0]
        y += pre[1]
        num += 1
        
    t += 1

tn = N-1

num = 1
x, y = 0, 0
t = 0

while tn >=0:
    full(tn)
    full(tn)
    full(tn)
    full(tn)

    tn -= 2
    x += 1
    y += 1
if N % 2:
    ans[N//2][N//2] = N * N
for a in ans:
    str_a = [str(_) for _ in a]
    print(" ".join(str_a))
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 81 买苹果

pythonTip 83 Py的函数I

Trending Tags