zoukankan      html  css  js  c++  java
  • 二项式系数

    问题

    编写程序,求二项式系数列表中(杨辉三角)第k层系数
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    .......
    (a+b)^k 其中k从0开始

    1. 把第k行的系数存储在队列中
    2. 依次出队k层的系数(每行最后一个1不出队),并推算k+1层系数
      添加到队尾,最后在队尾添加一个1,便变成k+1行

    例如第2行为例子

    1. deque([1,2,1])
    2. 依次出队后和队首相加,并添加到队尾,出队两次,结果deque([1,3,3]),最后队尾+1,得deque([1,3,3,1])

    Python代码

    # !/usr/bin/env python
    # -*-encoding: utf-8-*-
    # author:LiYanwei
    # version:0.1
    
    '''
    1.把第k行的系数存储在队列中
    2.依次出队k层的系数(没行最后一个1不出队),并推算k+1层系数
    添加到队尾,最后在队尾添加一个1,便变成k+1行
    '''
    
    from collections import deque
    
    def yanghui(k):
        '''
        二项系数算法
        :param k:
        :return:
        '''
        # 0 -> 1 -> 2 ... -< k
        # 第一步
        q = deque([1])
        for i in xrange(k):
            for _ in xrange(i):
                # 出队后和队首相加,并添加到队尾,循环i此
                q.append(q.popleft() + q[0])
            # 最后队尾+1
            q.append(1)
    
        return list(q)
    
    print yanghui(5)
    
    
  • 相关阅读:
    Windows10 iis10 arr webfarm
    两个command的疑惑
    关于controller和apicontroller的跨域实现过滤器的不同
    抽象工厂
    c# 字体库跨域解决
    c# 父类的引用指向子类的实例
    垂直居中
    扇形导航
    2D变换
    京东放大镜效果
  • 原文地址:https://www.cnblogs.com/Py00/p/7697509.html
Copyright © 2011-2022 走看看