设为首页 加入收藏

TOP

从“杨辉三角形”谈起(一)
2019-09-14 00:52:10 】 浏览:186
Tags:杨辉 三角形 谈起

      杨辉三角是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623~1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年。

      如果将(a+b)n(n为非负整数)的每一项按字母a的次数由小到大排列,就可以得到下面的等式:

      (a+b)0=1 ,    它只有一项,系数为1;
      (a+b)1=a+b ,它有两项,系数分别是1,1;
      (a+b)2=a2+2ab+b2,它有三项,系数分别是1,2,1;
      (a+b)3=a3+3a2b+3ab2+b3,它有四项,系数分别是1,3,3,1;
       ……

      由此,可得下面的图表,这个图表就是杨辉三角形。

       观察上图表,我们发现每一行的首末都是1,并且下一行的数比上一行多1个,中间各数都写在上一行两数中间,且等于它们的和,可以按照这个规律继续将这个表写下去。

【例1】杨辉三角形。

      输入n(1<=n<=30),输出杨辉三角形的前n行。

      (1)编程思路1。

      用一个二维数组 y[31][31] 来保存杨辉三角形每一行的值。杨辉三角形第row行可以由第row-1行来生成。

例如:

数组元素

Y[row][1]

Y[row][2]

Y[row][3]

Y[row][4]

Y[row][5]

Row=4行

1

3

3

1

0

Row=5行

1

4

6

4

1

      由上表知:当row=5时,              y[5][1] = 1,

                y[5][2] = y[4][1] + y[4][2],   y[5][3] = y[4][2] + y[4][3],

                y[5][4] = y[4][3] + y[4][4] ,  y[5][5] = y[4][4] + y[4][5]

      一般的,对于第row(1~30)行,该行有row+1个元素,其中:

      y[row][1]=1

      第col(2~row+1)个元素为:  y[row][col] = y[row-1][col-1] + y[row-1][col]。

      (2)源程序1。

#include <stdio.h>
int main()
{
      int n,i,j,y[31][31]={0};
      for (i=1;i<=30;i++)        // 赋行首与行尾元素值为1
           y[i][1]=y[i][i]=1;
      for (i=3;i<=30;i++)        // 每行中间元素赋值
           for (j=2;j<i;j++)
               y[i][j]=y[i-1][j-1]+y[i-1][j];
      while (scanf("%d",&n)!=EOF)
      {
           for (i=1;i<=n;i++)
           {
                 for (j=1;j<=i;j++)
                 {
                      if (j!=1) printf(" ");
                          printf("%d",y[i][j]);
                 }
                 printf("\n");
            }
            printf("\n");
      }
      return 0;
}

      (3)编程思路2。

      用一个一维数组 y[30] 来保存杨辉三角形某一行的值。杨辉三角形第row行可以由第row-1行来生成。

      例如:

数组元素

Y[0]

Y[1]

y[2]

Y[3]

Y[4]

Row-1=3行

1

3

3

1

0

Row=4行

1

4

6

4

1

      由上表知:当row=4时,y[4] = y[4]+y[3],    y[3] = y[3]+y[2],

                        y[2] = y[2]+y[1] ,   y[1] = y[1]+y[0],

 &n

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++Primer 5th Chap4 Expressions 下一篇[基础]C++:名字的作用域

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目