HDU2032杨辉三角

(其实我就是个渣渣也没什么好讲的是不是)

还记得杨辉三角这个奇怪的东西嘛

具体的定义这里就不说了,大概如下

                      1

                   1     1

                1     2     1

           1       3     3      1

      1        4      6      4      1

1         5       10     10      5      1

好的,废话不多说,大概就这样哒

Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
   2    3
Sample Output
  1 1 1 1 1 1 1 2 1
Author
lcy
 
Source
 
问题见上文
问题分析:这里给出两个版本的程序,分别用一维数组和二维数组来存储杨辉三角。使用二维数组存储杨辉三角,可以实现一次计算多次使用。使用一维数组存储杨辉三角,需要更高的技巧。编程时候,需要注意空格输出的条件。
 
AC的C语言程序如下(使用二维数组的版本):
 1 /* HDU2032 杨辉三角 */
 2 
 3 #include <stdio.h>
 4 
 5 int pascal[30+1][30+1];
 6 
 7 // 使用二维数组的杨辉三角程序
 8 void pascalgo(int n)
 9 {
10     int i, j;
11 
12     for(i=0; i<n; i++)
13         for(j=0; j<=i; j++)
14             if(j == 0 || j == i)
15                 pascal[i][j] = 1;
16             else
17                 pascal[i][j] = pascal[i-1][j] +pascal[i-1][j-1];
18 }
19 
20 void pascalprint(int n)
21 {
22     int i, j;
23 
24     for(i=0; i<n; i++) {
25         for(j=0; j<=i; j++) {
26             if(j != 0)
27                 printf(" ");
28             printf("%d", pascal[i][j]);
29         }
30         printf("\n");
31     }
32 }
33 
34 int main(void)
35 {
36     int n;
37 
38     pascalgo(30);
39 
40     while(scanf("%d", &n) != EOF) {
41        pascalprint(n);
42        printf("\n");
43     }
44 
45     return 0;
46 }

emmm上面是二维数组的版本,康康又是奇奇怪怪的代码

AC的C语言程序如下(使用一维数组的版本):

 

 1 /* HDU2032 杨辉三角 */
 2 
 3 #include <stdio.h>
 4 
 5 int pascal[30+1];
 6 
 7 // 使用一维数组的杨辉三角程序
 8 void pascalgo(int n)
 9 {
10     int i, j;
11 
12     for(i=0; i<n; i++) {
13         for(j=i; j>=0; j--) {
14             if(j == i || j == 0)
15                 pascal[j] = 1;
16             else
17                 pascal[j] += pascal[j-1];
18             if(j != i)
19                 printf(" ");
20             printf("%d", pascal[j]);
21         }
22         printf("\n");
23     }
24 }
25 
26 int main(void)
27 {
28     int n;
29 
30     while(scanf("%d", &n) != EOF) {
31        pascalgo(n);
32        printf("\n");
33     }
34 
35     return 0;
36 }

 

大概就这样啦,各位掰掰~

 

posted @ 2020-03-30 09:00  --rxc  阅读(109)  评论(0)    收藏  举报