分別打印二項式(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入隊列)。