天天看点

杨辉三角与倒置杨辉三角

杨辉三角问题:

杨辉三角是按照一定规律排列而成的数字。在这里我们可以用程序来进行输出,比较容易。

首先用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");
            }
  }