题目:
输入一个数字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;
}