代码改变世界

Pascal's Triangle II

2015-03-16 14:52  笨笨的老兔子  阅读(169)  评论(0编辑  收藏  举报

输入一个整数n,打印杨辉三角的第n行

只要知道一下公式即可,杨辉三角所对应的值即n次多项式展开的系数
(x+a)n=C0nxna0+C1nxn1a1+...+Cnnx0an
注意不要直接求Cmn会溢出,首先简单推导一下CmnCm+1n之间的关系,即Cm+1n=Cmnnmm+1,然后就每一次递推求解

  1. class Solution {
  2. public:
  3. vector<int> getRow(int rowIndex) {
  4. vector<int> res;
  5. if (rowIndex<0)
  6. {
  7. return res;
  8. }
  9. int x = 1;
  10. for (size_t i = 0; i < rowIndex; i++)
  11. {
  12. res.push_back(x);
  13. x = x * (rowIndex - i) / (i + 1);
  14. }
  15. res.push_back(1);
  16. return res;
  17. }
  18. };