Pascal triangle 帕斯卡三角形 杨辉三角形 二项式定理

来源:互联网 发布:淘宝里怎么发布宝贝 编辑:程序博客网 时间:2024/04/29 23:15

Pascal triangle







等段时间再扯pascal triangle~

先把一年多以前打印杨辉三角形的方法贴出来(简直不认直视,越来越不敢看以前自己写的东东了)


C语言实现:

/*************************************************************** Code writer : EOF Code date   : 2013.05.16 e-mail      : jasonleaster@gmail.com Code description :     Here is a demo for how to print out the pascal triangle.*****************************************************************/#include <stdio.h>#include <stdlib.h>void buildup(int S, int *n);void putout(int S, int *n);int main(){    int row = 0;    int k = 0, m = 0, x = 0, S = 0;    printf("Please enter the row number");    while(!scanf("%d",&S))    {         while(getchar() != '\n');         printf("please enter again!\n");    }    int *n = (int *)malloc((S + 1)*(S/2)*sizeof(int));    if(!n)    {        printf("malloc failed!\n");        return -1;    }    buildup(S, n);    putout(S, n);    return 0;}void buildup(int S, int *n){    int row , k , m , x , y , a , b;    row = k = m = x = y = a = b =0;        //initialization    for(m = 0; m < (S+1)*(S/2); m++)    {        n[m] = 0;    }    for(row = 1; row <= S; row++)    {        m = ((row*(row-1))/2);        n[m] = 1;    }    for(row = 1;row <= S; row++)    {        m = ((row*(row+1))/2) -1;        n[m] = 1;    }    //key method    for(k = 2; k <= S-1; k++)    {        for(row = (3 + k -2); row <= S; row++)        {            m = ((row*(row-1))/2) - 1 + k;            x = m - row;            y = m - row + 1;            a = ((row*(row+1))/2) - row;            b = ((row*(row+1))/2) - 1;            if( m != a && m != b)            {                n[m] = n[x] + n[y];            }            else            {                n[m] = 1;            }        }    }}void putout(int S, int *n){    int row , blank , rank , num;    row = blank = rank = num = 0;    for(row = 1; row <= S; row++)    {        if(row == 1)        {            for(blank = 1; blank <= 4*(S-row); blank++)            {                printf(" ");            }        }        else        {            for(blank = 1; blank <= (S-row); blank++)            {                printf("    ");            }        }        for(rank = 1; rank <= row; rank++)        {            printf("%d     ", n[num]);            num++;            if(rank == row)            {                printf("\n");            }            printf(" ");        }    }}










                             摄于二零一四年八月十四日         秋水共长天一色 




0 0
原创粉丝点击