zoukankan      html  css  js  c++  java
  • python

      我不知道是否有人也遇到过这样的情况。今天用 python 写杨辉三角题的时候遇到了这么个问题。

      考虑如下代码:

    n = int(input())
    n += 1
    at = [1]  # 注意这里
    for _ in range(n):
        line = '-' * (2*(n - _ - 1)) + '***'
        sums = 0
        for j in range(_ + 1):
            sums += j
        edge1 = sums - _ - 1
        edge2 = sums
        for i in range(_ + 1):
            parent1 = sums - _ + i - 1
            parent2 = sums - _ + i
    
            if (edge1 == parent1) or (edge2 == parent2):
                at += [1]
            else:
                at += [at[parent1] + at[parent2]]
            line += str(at[sums + i]) + ('***' if i != _ + 1 else '')
        print(line)
    

      一开始我以为自己写的算法有问题,于是改了几下,但更不对了,然后调啊调,最终不耐烦了,又回过头,然后开始认真思考了,不管怎么想算法都没问题才对,然后,我看了一下输出:

      突然觉得是不是自动排序了啊。。。然后,我就怀疑到 list 初始化的地方:at = [1],感觉应该是初始化造成新加入的元素会按我的格式排序。

      总之,我把初始化 at = [1] 改成了 at = [] 后就正常了(但也太神奇了。。。为什么是按杨辉三角来排序。。。我。。。:

  • 相关阅读:
    20201216-1 文件读与写详解3
    20201214-4 文件读与写详解2
    20201214-3 文件读与写详解1
    20201214 集合及其运算
    3月17日:毕业设计计划
    3月16日:毕业设计计划
    3月15日:毕业设计计划
    3月14日:毕业设计计划
    3月13日:毕业设计计划
    3月12日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/darkchii/p/12726517.html
Copyright © 2011-2022 走看看