杨辉三角(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
... ...

浙公网安备 33010602011771号