杨辉三角

用一维数组或二维数组打印杨辉三角

#include <stdlib.h>
#include <math.h>
#include <iostream>
using namespace std;

int a[15][15];
int aa[1024];
void yang_2D(){//二维数组打印杨辉三角 
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            if(j==1) a[i][j]=1;
            else a[i][j]=a[i-1][j]+a[i-1][j-1];
        }
    }
    for(int i=1;i<=n;i++){
        for(int k=1;k<=n-i;k++) {
                printf(" ");
            }
        for(int j=1;j<=i;j++){
            printf("%d  ",a[i][j]);
        }
        printf("\n");
    }
} 
void yang_1D(){//一维数组打印杨辉三角 
    int n;
    int all=0,last=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        last=all-1;                                  //last记录第i-1行前面共多少个元素 
        all+=i-1;                                    //all记录第i行前面共多少个元素 
        for(int j=1;j<=i;j++){
            if(j==1||i==j) aa[all+j]=1;              //每行第一个元素和最后一个元素是1 
            else {
                aa[all+j]=aa[last+j]+aa[last+j+1];   //每个元素的值等于上一行对应元素和后对应元素后一元素之和 
            }
        }
    }
    all=0;
    for(int i=1;i<=n;i++){
        all+=i-1;
        for(int k=1;k<=n-i;k++) printf(" ");
        for(int j=1;j<=i;j++) printf("%d  ",aa[all+j]);
        printf("\n");
    }
}
int main(){
    yang_1D();
    yang_2D();
    return 0;
} 

 

posted @ 2021-01-10 21:04  Maxwell·  阅读(73)  评论(0编辑  收藏  举报