ccf题解 201412-2 Z字形扫描 python (找规律的思路)

ccf题解 201412-2 Z字形扫描 python (找规律的思路)

前言:博主表示这个题真得太费脑筋啦!因为是业余时间练习,所以遇到这种一时半会想不到好思路的题,就容易懈怠,好像将近半月没有做题了,好难啊!但是博主最终还是挺了过来,个人比较喜欢一位博主所用的改变方向的思路,我这个到有点小朋友了…如果有不对的地方,欢迎大家指出!

问题描述:暂略,有时间会搬过来哒!

题目分析:
大家看原题就能看出具体的扫描走向,首先把每一行当做一个列表,存储到一个大列表b中,这样每个元素可以用b[i][j]来表示.我来贴张图:
在入图片描述
代码思路:
首先把每行的数(一个小列表)存入一个大列表,思路如上图,有两个需要注意的地方,一个外层循环的k(代码中是i)分偶数和奇数,另外就是分小于n和不大于n!

n=int(input()) #输入n行
b=[] #存储所有的数
for i in range(n):  
    b.append(list(map(int,input().split())))
c=[]    #按打印顺序存储数
for i in range(n*2-1):  #外层循环
    if i<n:   #小于n时,每列个数为i
        for j in range(i+1):
            if i % 2 == 0:    #i为偶数时行位置顺序大小倒序
                c.append(b[i - j][j])      #行列位置和为外层循环的值i
            else:               #i为奇数时行位置顺序大小正序
                c.append(b[j][i - j])
    else:   #大于等于n时,每列个数为(n*2-1-i)
        for j in range(n*2-1-i):
            if i%2==0:
                c.append(b[n-j-1][j+i-n+1])
            else:
                c.append(b[j+i-n+1][n-j-1])
print(' '.join(map(str,c)))

样例
输入:
5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
输出:
1 2 6 11 7 3 4 8 12 16 21 17 13 9 5 10 14 18 22 23 19 15 20 24 25

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值