1. 程式人生 > >用迴圈佇列解決二項式展開式的係數--楊輝三角

用迴圈佇列解決二項式展開式的係數--楊輝三角

/***********************************************
******用迴圈佇列解決(a+b)i次方的二項式展開式的係數*****
************************************************/
#include<stdio.h>
#define MAXSIZE 50
int main(void)
{
    int num[MAXSIZE];
    //first隊頭指標,rear對尾指標,last當前項的最後一個係數=rear-1
    int first,rear,last;
    int n,i;
    while((scanf("%d",&n))!=EOF)//冪為n
    {
        num[0]=1;num[1]=1;//第一項
        first=0;rear=2;
        for(i=1;i<n;i++)//從冪為1到冪為n需要的迴圈次數
        {
            //從冪為m-1到冪為m的變化
            last=rear-1;
            while(first!=last)
            {
                num[rear]=num[first]+num[(first+1)%MAXSIZE];
                first=(first+1)%MAXSIZE;
                rear=(rear+1)%MAXSIZE;
            }
            num[rear]=1;
            rear=(rear+1)%MAXSIZE;
        }
        while(first!=rear)
        {
            printf("%d ",num[first]);
            first=(first+1)%MAXSIZE;
        }
        putchar('\n');
    }
    return 0;
}