用循环队列解决二项式展开式的系数--杨辉三角

/***********************************************
******用循环队列解决(a+b)i次方的二项式展开式的系数*****
************************************************/
#include
#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
        {
            //从幂为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;
}
 
 

你可能感兴趣的:(数据结构与算法)