测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25772. 提示信息:回形取数,是沿着一个数字矩阵的左上角向下开始移动取数,当前方没有数字或者数字已经被取过,就会左转继续移动取数,当没有数可取时回形取数结束。如下图所示:回形取数结束后会产生一条线路图,也就是数字线路,上图的数字线路为:1,5,9,13,14,15,16,12,8,4,3,2,6,10,11,7编程实现:用户分别输入两个正整数,第一个数代表数字矩阵的行数,第二个数代表数字矩阵的列数,数字矩…

填空题 困难

题目描述

提示信息:

回形取数,是沿着一个数字矩阵的左上角向下开始移动取数,当前方没有数字或者数字已经被取过,就会左转继续移动取数,当没有数可取时回形取数结束。如下图所示:

回形取数结束后会产生一条线路图,也就是数字线路,上图的数字线路为:1,5,9,13,14,15,16,12,8,4,3,2,6,10,11,7

编程实现:

用户分别输入两个正整数,第一个数代表数字矩阵的行数,第二个数代表数字矩阵的列数,数字矩阵的数字为从1开始的正整数。根据回形取数规则将最终的数字线路输出(数字线路中的每个数字之间需要有一个英文逗号格隔开)。

例如:

输入的是2和3数字矩阵为:

1 2 3
4 5 6

数字线路为:1,4,5,6,3,2

输入的是4和3数字矩阵为:

1  2  3  
4  5  6  
7  8  9 
10 11 12

数字线路为:1,4,7,10,11,12,9,6,3,2,5,8

(注:数字矩阵不需要输入,此处只为展示)

输入描述:

第一行输入一个正整数作为行数

第二行输入一个正整数作为列数

输出描述:

根据回形取数规则将数字线路输出(数字线路中的每个数字之间需要有一个英文逗号隔开)

样例输入:

3
2

样例输出:

1,3,5,6,4,2

参考答案

b = int(input()) a = int(input()) sz = [] x = 1 for i in range(b): sz.append([]) for j in range(a): sz[-1].append(x) x += 1 # for i in sz: # for j in i: # print(j, end="\t") # print() x = 0 y = 0 z = 0 stop = a * b read = [] readed = 0 while True: for i in range(z,b - z): if sz[x][y] not in read: read.append(sz[x][y]) readed += 1 x += 1 x -= (1) for i in range(z,a - z): if sz[x][y] not in read: read.append(sz[x][y]) readed += 1 y += 1 y -= (1) for i in range(z,b - z): if sz[x][y] not in read: read.append(sz[x][y]) readed += 1 x -= 1 x += (1) for i in range(z,a - z): if sz[x][y] not in read: read.append(sz[x][y]) readed += 1 y -= 1 y += (1) if readed >= stop: break z += 1 x = z y = z print(",".join(map(str, read)))

答案解析

评判标准:

20分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

20分:能正确输出四组数据;

20分:能正确输出五组数据。

上一题 下一题