问题链接:HDU2032 杨辉三角。这是一个入门训练题,用C语言编写程序。
问题简述:参见上述链接。
问题分析:这里给出两个版本的程序,分别用一维数组和二维数组来存储杨辉三角。使用二维数组存储杨辉三角,可以实现一次计算多次使用。使用一维数组存储杨辉三角,需要更高的技巧。编程时候,需要注意空格输出的条件。
程序说明:(略)。
有关杨辉三角程序,参见:I00001杨辉三角。
AC的C语言程序如下(使用二维数组的版本):
/* HDU2032 杨辉三角 */ #include <stdio.h> int pascal[30+1][30+1]; // 使用二维数组的杨辉三角程序 void pascalgo(int n) { int i, j; for(i=0; i<n; i++) for(j=0; j<=i; j++) if(j == 0 || j == i) pascal[i][j] = 1; else pascal[i][j] = pascal[i-1][j] +pascal[i-1][j-1]; } void pascalprint(int n) { int i, j; for(i=0; i<n; i++) { for(j=0; j<=i; j++) { if(j != 0) printf(" "); printf("%d", pascal[i][j]); } printf(" "); } } int main(void) { int n; pascalgo(30); while(scanf("%d", &n) != EOF) { pascalprint(n); printf(" "); } return 0; }
AC的C语言程序如下(使用一维数组的版本):
/* HDU2032 杨辉三角 */ #include <stdio.h> int pascal[30+1]; // 使用一维数组的杨辉三角程序 void pascalgo(int n) { int i, j; for(i=0; i<n; i++) { for(j=i; j>=0; j--) { if(j == i || j == 0) pascal[j] = 1; else pascal[j] += pascal[j-1]; if(j != i) printf(" "); printf("%d", pascal[j]); } printf(" "); } } int main(void) { int n; while(scanf("%d", &n) != EOF) { pascalgo(n); printf(" "); } return 0; }