斐波那契蛇 — Python实现
发布日期:2021-10-02 06:27:38 浏览次数:2 分类:技术文章

本文共 1073 字,大约阅读时间需要 3 分钟。

题目描述

将斐波那契数列按照从大到小,顺时针的顺序存放在n*n的方阵中,n=3的情况如下图所示:

在这里插入图片描述

解题思路

先生成斐波那契数列的数组,让后将数组按照要求存放:

  • 存放的时候我们可以一圈一圈地存放
  • 当整个一圈遍历完了以后进行下一圈的遍历
  • 停止条件为2*圈数小于n(每遍历整个一圈少两行或两列)

代码实现

n=int(input())def fib(n):#生成斐波那契数组    if n==1:        return [1]    if n==2:        return [1,1]    res=[1,1]    for i in range(2,n):        res.append(res[i-1]+res[i-2])    return resdef trans(res,n):#转化为要求的格式    length=res.__len__()    tab=[[0]*n for i in range(n)]    layer=0    count=0    while 2*layer<=n:        for c in range(layer,n-layer):            tab[layer][c]=res[length-1-count]            count=count+1        for r in range(layer+1,n-layer):            tab[r][n-layer-1]=res[length-1-count]            count=count+1        for c in range(n-layer-2,layer-1,-1):            tab[n-layer-1][c]=res[length-1-count]            count=count+1        for r in range(n-layer-2,layer,-1):            tab[r][layer]=res[length-1-count]            count=count+1        layer=layer+1    return tabres=trans(fib(n*n),n)for i in range(n):    for j in range(n):        print(res[i][j],end=' ')    print()

代码运行结果:

输入4,输出结果如下:
在这里插入图片描述

转载地址:https://blog.csdn.net/Jeaten/article/details/108159880 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:正则表达式匹配 — C++实现
下一篇:删除链表中重复的结点 — C++实现

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月25日 23时49分25秒