天天看點

楊輝三角與倒置楊輝三角

楊輝三角問題:

楊輝三角是按照一定規律排列而成的數字。在這裡我們可以用程式來進行輸出,比較容易。

首先用C語言說明問題代碼,在本文章最後有C++的代碼供參考。

楊輝三角的形式為:

*

**

*

實際上我們可以對他進行簡化:

*

**

然後加上輸出幾個空格,這樣子就變成了三角行了。。

所謂的楊輝三角每一行的數字都有來源,是它的肩膀上的兩個數字相加而成的,在使用二維數組的同時,可以用語句:

a[i][j]=a[i-1][j]+a[i-1][j-1]           

然後配合空格的輸出完成:(上代碼)

#include<stdio.h>
    int main()
    {
        int n,a[10][10]={0},i,j,k;
        while (scanf("%d",&n)!=EOF&&(n>=1&&n<=10))
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<=i;j++)
                {
                    if(i==j||j==0)    //買一行的第一個是1加上對角線是1
                        a[i][j]=1;
                    else
                        a[i][j]=a[i-1][j]+a[i-1][j-1];//其餘的用肩膀上的兩個數字相加
                }
            }

         //輸出程式:(倒置的楊輝三角輸出)
            for(i=0;i<n;i++)
            {
                for(j=0;j<i;j++)     //輸出空格
                    printf("   ");   //空格由少變多
                for(k=0;k<n-i;k++)
                {
                    printf("%3d",a[n-i-1][k]);     //倒着從數組裡邊取出數字輸出
                    printf("   ");
                }
                printf("\n");
            }
            printf("\n");
        }
        return 0;
         //正楊輝三角輸出:
        for(i=0;i<n;i++)
            {
                for(j=n-i;j>0;j--)
                      printf("  ");
                for(k=0;k<=i;k++)
                    {
                        printf("%3d",a[i][k]);
                        printf("   ");
                    }
                    printf("\n");
            }
  }