打印杨辉三角
程序员文章站
2022-06-06 22:41:54
...
杨辉三角
1、每行端点与结尾的数为1
2、第n行有n个数
3、每一行的 第n(头尾除外)个数 等于 前一行的第n个数与第n-1个数的和
//错误示范
#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
int main()
{
int num;
cout<<"请输入打印到第几行\n";
cin>>num;
int *a=(int*)malloc(sizeof(int)*num);//设置一个长度为n的整型数组
for(int j=0; j<num; j++)
{
for(int i=0; i<=j; i++)
{ if (i==j||i==0)
a[i]=1;
else
a[i]=a[i-1]+a[i]; //从前往后遍历
cout<<setw(4)<<a[i];//设置位宽为4
}
cout<<endl;
}
return 0;
}
如图,以第4行数据为例,因为从前往后使得a[1]=a[1]+a[0],所以a[1]=2+1=3,于是a[2]=a[2]+a[1],即a[2]=3+1=4
//正确示范
#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
int main()
{
int num;
cout<<"请输入打印到第几行\n";
cin>>num;
int *a=(int*)malloc(sizeof(int)*num);//设置一个长度为n的整型数组
for(int j=0; j<num; j++)
{
for(int i=j; i>=0; i--)
{ if (i==j||i==0)
a[i]=1;
else
a[i]=a[i-1]+a[i]; //从每一行的最后一个数开始往前遍历。
cout<<setw(4)<<a[i];//设置位宽为4
}
cout<<endl;
}
return 0;
}
结果正确