题目:

输入一个数字n,实现输出n行对应的杨辉三角数;

分析:
这道题不难,就是找出其中的规律:

1.我们用到vector<>,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。我们把整体看成一个动态数组,再把每一行看成一个动态数组,所以采用vector<vector<int> >,嵌套一下。
2.每一行的其实和结尾都是一,可以直接定下来;
3.前两行直接就是第2步直接能写下来,到接下来的几行,都是上方左右累加所得。

源码:

include <bits/stdc++.h>

using namespace std;
int main(void)
{

vector<vector<int> > res;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
    vector<int> row(i+1);
    row[0]=1;                               //每行的开头为1
    for(int j=1;j<i;j++)                     //这一步很巧妙,前两行根本不受影响,我在第一次看的时候,迷了半天(xs)。
    {
        row[j]=res[i-1][j-1]+res[i-1][j];//由于每增加一行,元素就多增加一个,正好错位,
    }
    row[i]=1;                              //每行的结束也为1
    res.push_back(row);
}
for(int i=0;i<n;i++)
{
    for(int j=0;j<res[i].size();j++)
    {
        cout<<res[i][j]<<" ";
    }
    cout<<"\n";
}
return 0;

}