| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3016 人关注过本帖
标题:蛇形方阵,30分悬赏
只看楼主 加入收藏
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:166
专家分:149
注 册:2021-11-13
结帖率:76.47%
收藏
已结贴  问题点数:30 回复次数:10 
蛇形方阵,30分悬赏
在 n×n 方陈里填入 1,2,⋯,n×n,要求填成蛇形。例如 n=4 时方阵为:

10 11 12 1
 9 16 13 2
 8 15 14 3
 7  6  5 4
输入格式
直接输入方阵的维数,即 n 的值。(n≤100)

输出格式
输出结果是蛇形方阵。

输出时每行末尾的多余空格,不影响答案正确性

样例输入
3
样例输出
7 8 1
6 9 2
5 4 3
求助!30分悬赏!学校作业,需及时提交!
搜索更多相关主题的帖子: 输出 方阵 答案 输入 格式 
2022-02-12 11:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 楼主 风卷浪起
抄袭网上  由c代码 改编:(原理实在是一时半会弄不明白)

程序代码:
#初始化数组 暂用列表代替
a=[]
for x in range(20):
    b=[]
    for y in range(20):
         b.append(0)
    a.append(b)     

m=8  #
n=9  #
dx=[-1,0,1,0]
dy=[0,1,0,-1]   # dx,dy用于调整方向
x=y=0
d=1
for q in range(1,m*n+1):
    a[x][y]=q
    ax=x+dx[d]
    by=y+dy[d]     #ax,by 记录要移动到的位置
    
    if ax<0 or ax>=m or by<0 or by>=n or a[ax][by]:  #边界处理,满足任意一种条件 即越界,需要改变方向
        d=(d+1)%4    #顺时针改变方向
        ax=x+dx[d]
        by=y+dy[d]
    x=ax
    y=by   

 
for x in range(m):
    for y in range(n):
        print("%4d"%a[x][y],end="")
    print()    

'''
PS C:\Users\Administrator> & C:/Programs/Python/python.exe d:/wp/test7.py
   1   2   3   4   5   6   7   8   9
  30  31  32  33  34  35  36  37  10
  29  52  53  54  55  56  57  38  11
  28  51  66  67  68  69  58  39  12
  27  50  65  72  71  70  59  40  13
  26  49  64  63  62  61  60  41  14
  25  48  47  46  45  44  43  42  15
  24  23  22  21  20  19  18  17  16
PS C:\Users\Administrator>
'''    

DO IT YOURSELF !
2022-02-13 17:53
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:566
专家分:3690
注 册:2019-7-29
收藏
得分:0 
程序代码:
n = input("请输入矩阵维数:")
n = int(n)
if n > 0:
    direction = [[1, 0, -1, 0], [0, -1, 0, 1]]  # 方向,下左上右
    array = [[0 for i in range(n)] for j in range(n)]  # 创建二维数组
    row = 0
    column = n-1
    current_dir = 0

    for i in range(n*n):
        #  print(f"{row},{column},{i+1},{current_dir}")
        array[row][column] = i+1
        next_row = row + direction[0][current_dir]
        next_column = column + direction[1][current_dir]
        if next_row >= n or next_column >= n or next_row < 0 or next_column < 0:
            current_dir = (current_dir+1) % 4
            row += direction[0][current_dir]
            column += direction[1][current_dir]
        elif array[next_row][next_column] != 0:
            current_dir = (current_dir + 1) % 4
            row += direction[0][current_dir]
            column += direction[1][current_dir]
        else:
            row = next_row
            column = next_column

    for i in range(n):
        for j in range(n):
            print(f"{array[i][j]}\t", end="")
        print("\n", end="")

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2022-02-14 19:13
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:166
专家分:149
注 册:2021-11-13
收藏
得分:0 
回复 2楼 wp231957
可是试了一下发现方向不对!

人生苦短,我用Python~~~
2022-02-14 20:18
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:166
专家分:149
注 册:2021-11-13
收藏
得分:0 
回复 3楼 纯蓝之刃
倒数第二句有语法错误!

人生苦短,我用Python~~~
2022-02-14 20:18
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:166
专家分:149
注 册:2021-11-13
收藏
得分:0 
也可以用C++的。

人生苦短,我用Python~~~
2022-02-14 20:19
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:30 
回复 4楼 风卷浪起
程序代码:
#初始化数组 暂用列表代替
a=[]
for x in range(20):
    b=[]
    for y in range(20):
         b.append(0)
    a.append(b)     

m=9  #行
n=9  #列
dx=[-1,0,1,0]
dy=[0,1,0,-1]   # dx,dy用于调整方向
x=0
y=n-1
d=1
for q in range(1,m*n+1):
    a[x][y]=q
    ax=x+dx[d]
    by=y+dy[d]     #ax,by 记录要移动到的位置
    
    if ax<0 or ax>=m or by<0 or by>=n or a[ax][by]:  #边界处理,满足任意一种条件 即越界,需要改变方向
        d=(d+1)%4    #顺时针改变方向
        ax=x+dx[d]
        by=y+dy[d]
    x=ax
    y=by   

 
for x in range(m):
    for y in range(n):
        print("%4d"%a[x][y],end="")
    print()    

'''
========================== RESTART: D:/python310/t1.py =========================
  25  26  27  28  29  30  31  32   1
  24  51  52  53  54  55  56  33   2
  23  50  69  70  71  72  57  34   3
  22  49  68  79  80  73  58  35   4
  21  48  67  78  81  74  59  36   5
  20  47  66  77  76  75  60  37   6
  19  46  65  64  63  62  61  38   7
  18  45  44  43  42  41  40  39   8
  17  16  15  14  13  12  11  10   9


'''


DO IT YOURSELF !
2022-02-14 20:38
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:566
专家分:3690
注 册:2019-7-29
收藏
得分:0 
回复 5楼 风卷浪起
你用3.9以上的版本就可以了,我也不清楚低版本这个地方应该怎么样写

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2022-02-14 22:03
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:166
专家分:149
注 册:2021-11-13
收藏
得分:0 
回复 7楼 wp231957
谢谢!

人生苦短,我用Python~~~
2022-02-17 11:41
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:166
专家分:149
注 册:2021-11-13
收藏
得分:0 
回复 8楼 纯蓝之刃
作业只能用3.5的版本。

人生苦短,我用Python~~~
2022-02-17 11:41
快速回复:蛇形方阵,30分悬赏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016821 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved