ACM課件(lecture08)母函數(shù).ppt_第1頁
ACM課件(lecture08)母函數(shù).ppt_第2頁
ACM課件(lecture08)母函數(shù).ppt_第3頁
ACM課件(lecture08)母函數(shù).ppt_第4頁
ACM課件(lecture08)母函數(shù).ppt_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、ACM程序設計,杭州電子科技大學 劉春英 ,2020/8/10,2,上一周,,你 了嗎?,練習,2020/8/10,3,每周一星(7):,07054202,2020/8/10,4,第八講,母函數(shù)及其應用 (Generation function),2020/8/10,5,從遞推關(guān)系說起,2020/8/10,6,研究以下多項式乘法:,可以看出: x2項的系數(shù)a1a2+a1a3+.+an-1an中所有的項包括n個元素a1,a2, an中取兩個組合的全體; 同理:x3項系數(shù)包含了從n個元素a1,a2, an中取3個元素組合的全體; 以此類推。,(81),2020/8/10,7,若令a1=a2= =a

2、n=1,在(8-1)式中a1a2+a1a3+.+an-1an項系數(shù)中每一個組合有1個貢獻,其他各項以此類推。故有:,(82),特例:,2020/8/10,8,母函數(shù)定義:,對于序列a0,a1,a2,構(gòu)造一函數(shù):,稱函數(shù)G(x)是序列a0,a1,a2,的母函數(shù),2020/8/10,9,For example:,(1+x)n是序列C(n,0),C(n,1),.,C(n,n)的母函數(shù)。 如若已知序列a0,a1,a2,則對應的母函數(shù)G(x)便可根據(jù)定義給出。 反之,如若已經(jīng)求得序列的母函數(shù)G(x),則該序列也隨之確定。 序列a0,a1,a2,可記為an 。,2020/8/10,10,實 例 分 析,2

3、020/8/10,11,例1:若有1克、2克、3克、4克的砝碼各一 枚,能稱出哪幾種重量?各有幾種可能方案?,如何解決這個問題呢?考慮構(gòu)造母函數(shù)。 如果用x的指數(shù)表示稱出的重量,則: 1個1克的砝碼可以用函數(shù)1+x表示, 1個2克的砝碼可以用函數(shù)1+x2表示, 1個3克的砝碼可以用函數(shù)1+x3表示, 1個4克的砝碼可以用函數(shù)1+x4表示,,2020/8/10,12,幾種砝碼的組合可以稱重的情況,可以用以上幾個函數(shù)的乘積表示:,(1+x)(1+x2)(1+x3)(1+x4) =(1+x+x2+x3)(1+x3+x4+x7) =1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x1

4、0,從上面的函數(shù)知道:可稱出從1克到10克,系數(shù)便是方案數(shù)。 例如右端有2x5 項,即稱出5克的方案有2:5=3+2=4+1;同樣,6=1+2+3=4+2;10=1+2+3+4。 故稱出6克的方案有2,稱出10克的方案有1,2020/8/10,13,例2:求用1分、2分、3分的郵票貼出不同數(shù)值的方案數(shù),因郵票允許重復,故母函數(shù)為:,以展開后的x4為例,其系數(shù)為4,即4拆分成1、2、3之和的拆分數(shù)為4; 即:4=1+1+1+1=1+1+2=1+3=2+2,2020/8/10,14,概念:整數(shù)拆分,所謂整數(shù)拆分即把整數(shù)分解成若干整數(shù)的和(相當于把n個無區(qū)別的球放到n個無標志的盒子,盒子允許空,也允

5、許放多于一個球)。 整數(shù)拆分成若干整數(shù)的和,辦法不一,不同拆分法的總數(shù)叫做拆分數(shù)。,2020/8/10,15,練習(寫出以下問題的母函數(shù)):,例3:若有1克砝碼3枚、2克砝碼4枚、4克砝碼2枚,問能稱出哪幾種重量?各有幾種方案?,例4: 整數(shù)n拆分成1,2,3,m的和,求其母函數(shù)。,例5:如若上例中m至少出現(xiàn)一次,其母函數(shù)又如何?,2020/8/10,16,如何編寫程序?qū)崿F(xiàn)母函數(shù)的應用呢?,核心問題,關(guān)鍵:對多項式展開,2020/8/10,17,以整數(shù)拆分為例:,觀察以下的母函數(shù):,首先思考:如果讓你手工計算,你是怎樣處理的?,實際編程:讓計算機按照自己的思路計算即可,/ Author by

6、lwg #include using namespace std;const int lmax=10000; int c1lmax+1,c2lmax+1;int main()int n,i,j,k;while (cinn)for (i=0;i=n;i+) c1i=0;c2i=0; for (i=0;i=n;i+) c1i=1; for (i=2;i=n;i+)for (j=0;j=n;j+)for (k=0;k+j=n;k+=i) c2j+k+=c1j; for (j=0;j=n;j+) c1j=c2j;c2j=0; coutc1nendl;return 0; ,2020/8/10,19,主打

7、例題:HDOJ_1398 Square Coins,Sample Input 210300 Sample Output 1427,2020/8/10,20,算法分析:,典型的利用母函數(shù)可解的題目。 G(x)=(1+x+x2+x3+x4+)(1+x4+x8+x12+)(1+x9+x18+x27+),2020/8/10,21,/HDOJ_1398 Square Coins #include using namespace std; const int lmax=300; int c1lmax+1,c2lmax+1; int main(void) int n,i,j,k; while (cinn ,

8、2020/8/10,22,/HDOJ_1398 Square Coins /變化一點點,靈活多多多 int main(void) int n,i,j,k; int elem17=1,4,9,16,25,36,169,196,225,256,289 while (cinn ,2020/8/10,23,思考(1):,HDOJ_1028 Ignatius and the Princess III,2020/8/10,24,思考(2):,HDOJ_1085 Holding Bin-Laden Captive!,2020/8/10,25,思考(3):,HDOJ_1171 Big Event in HDU,2020/8/10,26,思考(4):,HDOJ_1709The Balance,Any questions?,2020/8/10,28,附:相關(guān)作業(yè)(hdoj):,2008ACM ProgrammingExercise(9)_母函數(shù),1,2,3,Go! 一定要練習

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論