算法-利用隊列實現逐行打印楊輝三角形的前n行


分別打印二項式(a+b)^n展開項的系數,在程序中利用了一個隊列,在輸出上一行系數時,將下一行的系數預先放入隊列中。在各行系數間插入0。
void YANGVI(int n){

    Queue q(n+2);  //建立隊列對象q並初始化。

    int i=1,j,s=0,t,u;

    q.EnQueue(1);q.EnQueue(1);  //插入第一行元素

    for(i=1; i<=n; i++){

        cout<<endl;   //換行

        q.EnQueue(0); //每行剛開始打印的時候,先在隊列尾部插入一個0

        for(j=1; j<=i+2; j++){   //第i行有i+1個系數和1個0

            q.DeQueue(t);  //第i行第j個系數t出隊列

            u=s+t;         //s為第i行第j-1個系數,j==1時s必為0

            q.EnQueue(u);  //計算第i+1行第j個系數u=s+t並進隊列

            s=t;

            if(j!=i+2) cout<<s<<'';  //打印移除的系數,第i+2個是0

        }

    }

}

最后第n行的n+2次循環執行完后,隊列里是第n+1行的n+2個數,0還沒來得及入隊列(因為換行后才會把0入隊列)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM