一、[题目] 杨辉三角形
时间限制:1.0s 内存限制:512.0MB
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是,三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式
输入包含一个数n。1<=n<=34
输出格式
输出杨辉三角形的前n行。(空格的多少不作要求,只要使用单个空格分隔即可。)
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
二、[代码]:
PS. 杨辉三角形 是一道图形输出类题目,解题的关键在于充分把握图形中的每个元素的对应关系,从题目中可以知道“三角形中的每个数字等于它两肩上的数字相加”这个对应关系,所以需要我们充分把握这个关系并结合一定的算法即可输出如图所示的三角形图像,以下列出我的解法。
算法一: 递推函数法
#include <stdio.h>
#include <string.h>
void YangTrian(int n, int* c, int p=1)
{
if(p<=n){
int i=0;
while(i<p) printf(i==p-1?"%d\n":"%d ",c[i++]);
int* t=new int[p+1];
memset(t,sizeof(t),0);
i=0;
while(i<=p){
t[i++]=((i&&i!=p)?c[i-1]+c[i]:1);
}
YangTrian(n,t,p+1);
delete t;
}
}
int main()
{
int i;
scanf("%d",&i);
int t[]={1};
YangTrian(i,t);
return 0;
}
欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!