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

/***********************************************
******用循环队列解决(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;
}
    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/you_shou/article/details/51457452
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞