杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入包含一个数n。
1 1
1 2 1
1 3 3 1
/*杨辉三角*/
#include <stdio.h>
int array[10000], array_copy[10000];
void calculate(int array[],int n){
int i;
for (i = 0; i < n; i++) {
array_copy[i] = array[i];
}
for (i = 0; i < n+1; i++) {
if (i == 0 || i == n) {
array[i] = 1;
}else{
array[i] = array_copy[i-1] + array_copy[i];
}
}
}
int main(int argc, char ** argv){
int n;
int i = 1;
int j = 0;
array[0] = 1;
scanf("%d", &n);
if (n == 1) {
printf("1\n");
}else{
printf("1\n");
while (i < n) {
calculate(array, i);
i++;
for (j = 0; j < i; j++) {
printf("%d ",array[j]);
}
printf("\n");
}
}
return 0;
}
/*
总结:
1.这道题关键在于搞清楚杨辉三角是怎么算出来的,他是前两项的和相加得到的
2.还要注意每次计算新的数组时候要保存原来的数组
*/