巴斯卡三角形编程实现

巴斯卡三角形编程实现_第1张图片

编程实现这个图片显示:

假如知道这个是一个著名的算法,那么可能编程很简单,把算法转化一下就ok了。

但是假如不知道,应该怎么入手,首先要把这个图形转化为一个2为数组的形式,如下图:

巴斯卡三角形编程实现_第2张图片

很容易得出一个计算的方法:

第一位,最后一位都是1

前两行固定好了。

新行开始一位都是1.

第二位怎么是0。

第三位一直到中间行(包括)都是上一行的前一位和后一位相加得到。

中间行以后正好一一对应,既可以。

 

N表示,要显示多少行

那么数组就是n*2+1这么多行数。

     int k = 0;//0----------M

     int i, j;

     int a = 1;

     for(i = 0; i <= M; i++){

         for(j = (M - k); j <= (M + k); j ++){

              if(a == 1){

                   num[i][j]= 1;

              }else if(a == 2){

                   num[i][j]= 0;

              }else{

                   if(j < N -1){

                        num[i][j] = num[i - 1][j - 1] + num[i -1][j + 1];

                   }else{

                       num[i][j]= 1;

                   }

              }

              a++;

         }

         a= 1;

         k++;

     }

图形和代码分析:

M表示第一行的显示位,或者说是中间列的位置。

第一个循环是0-----------------M一共m+1行。

第二个循环从0-----------------M一共m+1列。

         每行第一列为1,第二列为0.第三列为上一行的前一列,+上一行的后一列。

需要注意的是M行的最后一列,他没有上一行的后一列,那么他就直接=1.

 

 巴斯卡三角形编程实现_第3张图片

求巴斯卡三角形 的倒三角如何做?

 

只需要把正巴斯卡三角的输出修改一下即可。

你可能感兴趣的:(linux开发总结)