杨辉三角(Python/C++)

思路:

利用错位相加进行输出(每行结果vec = 上一行数据vec1头部添0得到的vec11 + 上一行数据vec1尾部添0得到vec12)(对应相加)

 

Python:

pro26.py

def func():
    L = [1]
    while True:
        yield L
        L = [x+y for k,x in enumerate([0]+L) for j,y in enumerate(L+[0]) if k==j::x]
    return L

pro27.py

from pro26 import func
def func1(x):
    n=func()
    i=0
    while i < x:
        m=next(n)
        print(m)
        i=i+1

 

 

C++

#include <iostream>
#include <vector>

using namespace std;

void func(int max) {
    vector<int> vec = { 1 };
    for (int m = 0; m < max; ++m) {
        vector<int> vec1=vec;
        for (size_t i = 0; i < vec.size(); ++i) {
            cout << vec[i] << " ";
        }
        cout << endl;
        vec.insert(vec.begin(), 0);
        vec1.push_back(0);
        
        for (size_t i = 0; i < vec.size(); ++i) {
            vec[i] += vec1[i];
        }
    }
}

int main()
{
    func(10);

    return 0;
}

 

 

拓展:

要求输出:

                1
            2        2
        3        4        3
... ...

 

posted @ 2019-03-03 15:34  Hk_Mayfly  阅读(331)  评论(0)    收藏  举报