Pascal's Triangle

Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,
Return

[

     [1],

    [1,1],

   [1,2,1],

  [1,3,3,1],

 [1,4,6,4,1]

]

思路:杨辉三角形,解决这道题就是要知道什么是杨辉三角形。

  1. 杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1。
  2. 第行的数字个数为个。
  3. 第行的第个数字为组合数
  4. 第行数字和为。
  5. 除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和(也就是说,第行第个数字等于第行的第个数字与第个数字的和)。这是因为有组合恒等式:。可用此性质写出整个杨辉三角形。
class Solution {

public:

    vector<vector<int> > generate(int numRows) {

        vector<vector<int> > result;

        result.resize(numRows); //创建空间 for(int i=0;i<numRows;i++)

        {

            for(int j=0;j<=i;j++)

            {

                result[i].push_back(1);//首先将这些全部赋值为1

            }

        }

        for(int i=0;i<numRows;i++)

        {

            for(int j=1;j<=i-1;j++)//从第三行开始,进行,你懂的

            {

                result[i][j]=result[i-1][j-1]+result[i-1][j];

            }

        }

        return result;

    }

};

 

你可能感兴趣的:(pascal)