#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip> //for setw()
using namespace std;
void PrintV(vector<int> v);
void PrintTri(int n)
{
if(n<1)
return;
int length = n*2-1; //最后一层一共有n*2-1个数字+空格
vector<int> prev(length);//每一层都设最大长度的vector,非数字补0
prev[length/2]=1;
PrintV(prev);
for(int i=2;i<n;i++){
vector<int> current(length);
for(int j=1;j<length-1;j=j+1)
current[j]=prev[j-1]+prev[j+1];
PrintV(current);
prev=current;
}
vector<int> last(length);
last[0]=1;
for(int j=1;j<length-1;j=j+1)
last[j]=prev[j-1]+prev[j+1];
last[length-1]=1;
PrintV(last);
}
void PrintV(vector<int> v)
{
for(int i=0;i<v.size();i++){
if(v[i])
cout<<setw(3)<<v[i];
else //为0则输出空格
cout<<setw(3)<<" ";
}
cout<<endl;
}
int main()
{
int n=12;
PrintTri(n);
system("pause");
return 0;
}
打印杨辉三角形
最新推荐文章于 2021-04-28 17:32:24 发布