問題介紹:
如果將二項式(a+b)^i(i=2,3,4……)展開,其係數排列成楊輝三角,如何實現各行係數的前n行列印出來,如下所示:
0 1 1 0 i=1
0 1 2 1 0 i=2
0 1 3 3 1 0 i=3
0 1 4 6 4 1 0 i=4
... i=...
問題分析:
楊輝三角從外形上有個很重要的特徵——三角中的任意乙個系數值(第一行除外)可以看成乙個其肩膀上的兩個係數之和;對於某一邊側肩膀上沒有的係數地方,可以看作此處有個預設值0。因此求任意一行i(i>=2)的系數值時,可以由i-1行的系數值來獲得,借助乙個輔助的資料結構佇列,事先將上一行的系數值入佇列,包括預設的行末尾的係數0(行首預設的係數0預存在乙個變數s中),利用出佇列運算,每齣乙個係數t,利用他的值和前面剛出佇列的系數值s之和得到下一行相應位置的系數值,並把剛得到的系數值入佇列,並把t值賦給s,迴圈下去,可以得到所需指定行數的楊輝三角。具體演算法如下。
演算法:
void yanghui_********(int n)}}
putchar('\n');
destroy_seqqueue(&sq);
}
完整**實現:
#include
#include
#define maxsize 100
typedef
structseqqueue,*pseqqueue;
pseqqueue init_seqqueue()
return q;
}int empty_seqqueue(pseqqueue q)
}int in_seqqueue(pseqqueue q,int x)
else
return1;}
int out_seqqueue(pseqqueue q,int *x)
else
}void destroy_seqqueue(pseqqueue *q)
*q = null;
}void yanghui_********(int n)}}
putchar('\n');
destroy_seqqueue(&sq);
}int main()
實現結果截圖:
用迴圈佇列實現列印楊輝三角(資料結構)
列印二項式係數表 即楊輝三角 1 2 1 1 3 3 1 1 4 6 4 1 係數表中的第k行有k 1個數,除了第乙個數和最後乙個數為1外,其餘的數則為上一行中位其左右的兩數之和。如果要求計算並輸出楊輝三角前n行的值,則佇列的最大空間應為n 2 第n行有n 1個數,且根據迴圈佇列的特性 少用乙個元素...
迴圈佇列 列印楊輝三角
利用迴圈佇列列印楊輝三角前n行的值 n 7 並以金字塔的形式輸出相應的值。include define max 100 define false 0 define true 1 迴圈佇列 typedef struct seqqueue 初始化迴圈佇列 void initqueue seqqueue ...
鏈佇列 列印楊輝三角
include include typedef int elemtype typedef struct sqqueuesqqueue typedef sqqueue linkqueue typedef struct queueptrqueueptr intinsiqueue queueptr s s...