7 条题解

  • 0
    @ 2024-9-20 16:27:08

    根据题意模拟即可,while判断

    n=int(input())
    a=[[0 for i in range(100)]for j in range(100)]
    prei=1
    prej=n//2+1
    posj=0
    posi=0
    a[1][n//2+1]=1
    k=2
    while(k<=n*n):
       if(prei==1 and prej!=n):
           posi=n
           posj=prej+1
       elif(prei!=1 and prej==n):
           posi=prei-1
           posj=1
       elif(prei==1 and prej==n):
           posi=prei+1
           posj=prej
       elif(prei!=1 and prej!=n):
           if(a[prei-1][prej+1]==0):
               posi=prei-1
               posj=prej+1
           else:
               posj=prej
               posi=prei+1
       prei=posi
       prej=posj
       a[posi][posj]=k
       k+=1
    for i in range(1,n+1):
        for j in range(1,n+1):
            print(a[i][j],end=" ")
        print()
    

    信息

    ID
    156
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    138
    已通过
    68
    上传者