【python刷题】蛇形方阵

题目描述

给出一个不大于 99 的正整数n,输出n*n的蛇形方阵。从左上角填上1开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用3个字符,前面使用空格补齐。

输入

输入一个正整数n,含义如题所述

输出

输出符合题目要求的蛇形矩阵

样例

输入 4

输出如下

|--------------------------------------------------------|
| 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 |

算法思路

用二维数组来存放整个矩阵,创建变量num记录当前位置应填入的数字,num超过n^2的时候说明已全部填入,则结束循环。变量top,bottom,left,right来限制每一次遍历的边界范围。变量fx用来记录方向,从而实现层层循环的同时能不断改变遍历的方向。输出时使用f字符串格式化输出从而统一格式。

题解

python 复制代码
n=int(input())
arr=[[0 for _ in range(n)] for _ in range(n)]
fx=0
num=1
left,right,top,bottom=0,n,0,n
while(num<=n**2):
    if(fx==0):
        for i in range(left,right):
            arr[top][i]=num
            num+=1
    fx=1
    top+=1
    if(fx==1):
        for i in range(top,bottom):
            arr[i][right-1]=num
            num+=1
    fx=2
    right-=1
    if(fx==2):
        for i in range(right-1,left-1,-1):
            arr[bottom-1][i]=num
            num+=1
    fx=3
    bottom-=1
    if(fx==3):
        for i in range(bottom-1,top-1,-1):
            arr[i][left]=num
            num+=1
    fx=0
    left+=1
for i in range(n):
    for j in range(n):
        print(f"{arr[i][j]:3}",end="")
    print("\n",end="")
相关推荐
颜酱14 分钟前
从0到1实现LFU缓存:思路拆解+代码落地
javascript·后端·算法
颜酱1 小时前
从0到1实现LRU缓存:思路拆解+代码落地
javascript·后端·算法
CoovallyAIHub19 小时前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub20 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub20 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub20 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub20 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞20 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
徐小夕1 天前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github