在书上刚看到这个题目的时候,我一时都有点懵,在以前学习编程的时间里,我可能因为不咋看书的缘故,就没有接触过这样的内容,一时觉得束手无策,所以我只好找了强大的百度学习知识,终于明白了杨辉三角的定义。
杨辉三角:杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二次项系数在三角形中的一种几何排列。杨辉三角形同时对应于二项式定理的系数。
性质特点:
前提:端点的数为1.
1、每个数等于它上方两数之和。
2、每行数字左右对称,由1开始逐渐变大。
3、第n行的数字有n项。
4、第n行数字和为2^(n-1)。
5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m),这是组合数性质
性质6的公式表述之一
6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。
7、第n行的m个数可表示为C(n-1,m-1)(n-1下标,m-1上标),即为从n-1个不同
杨辉三角的组合数表示元素中取m-1个元素的组合数。
组合数计算方法:C(n,m)=n!/[m!(n-m)!]
8、(a+b)^n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。
1 | ||||||||||||||||||
1 | 1 | |||||||||||||||||
1 | 2 | 1 | ||||||||||||||||
1 | 3 | 3 | 1 | |||||||||||||||
1 | 4 | 6 | 4 | 1 | ||||||||||||||
1 | 5 | 10 | 10 | 5 | 1 | |||||||||||||
1 | 6 | 15 | 20 | 15 | 6 | 1 | ||||||||||||
1 | 7 | 21 | 35 | 35 | 21 | 7 | 1 | |||||||||||
1 | 8 | 28 | 56 | 70 | 56 | 28 | 8 | 1 | ||||||||||
1 | 9 | 36 | 84 | 126 | 126 | 84 | 36 | 9 | 1 |
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
int n = 0;
int a[17][17]={0,1};
while(n<1 || n>16)
{
printf("请输入杨辉三角形的行数:");
scanf("%d",&n);
}
for(i=1; i<=n; i++)
{
for(j=1;j<=i; j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=i; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
不用数组,用指针的方法:
完整代码:
#include<stdio.h>
#define N 10
void main()
{
unsigned int i = 0;
unsigned int j = 0;
unsigned int k = 0;
unsigned int b = 0;
unsigned int c = 0;
for(i=0;i<N;i++)
{
for(j=N;j>i;j--)
{
printf("");
}
for(j=0;j<=i;j++)
{
b=c=1;
if(j>=1)
{
for(k=i-j+1;k<=i;k++)
{
b*=k;
}
for(k=1;k<=j;k++)
{
c*=k;
}
}
printf("%4d",b/c);
}
printf("\n");
}
system("pause");
return 0;
}
金字塔杨辉三角:
#include <stdio.h>
#define N 10
int main()
{
int a[N][2*N+2];
int i, j;
for(i=0; i<N; i++)
{
for(j=0; j<=2 * N + 1; j++)
{
a[i][j] = 0;
}<pre name="code" class="objc"> a[0][N] = 1;
for(i=1; i<N; i++)
{
for(j=1; j<=2 * N; j++)
{
a[i][j] = a[i-1][j-1]+a[i-1][j+1];
}
}
for(i=0; i<N; i++)
{
for(j=0; j<2*N; j++)
{
if(a[i][j] != 0)
{
printf("%3d", a[i][j]);
}
else
{
printf(" ");
}
}
printf("\n");
}
system("pause");
return 0;
}