日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu1085Holding Bin-Laden Captive!组合问题

發(fā)布時(shí)間:2025/5/22 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1085Holding Bin-Laden Captive!组合问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目連接

題目意思:有單位價(jià)值為1 2 5的三種硬幣,分別給出他們的數(shù)量,求用這些硬幣不能組成的最小的價(jià)值

解題思路:普通的母函數(shù)

普通的母函數(shù):

 利用母函數(shù)的思想可以解決很多組合問題,下面舉例說明:

 1.口袋中有白球2個(gè),紅球3個(gè),黃球1個(gè),從袋中摸出3個(gè)球有幾種取法?

  ? 和上面描述的例子類似,我們可以用次數(shù)代表球的個(gè)數(shù),多項(xiàng)式的每一項(xiàng)前面的系數(shù)代表取法的種樹。

  可以很容易地寫出下面這個(gè)式子:

  (1+x+x2)(1+x+x2+x3)(1+x)

?  (1+x+x2)表示有白球2個(gè),1(1可以看做是x的0次方)表示白球不取,x代表取1個(gè)白球,x2代表取2個(gè)白球,即用x的次數(shù)表示取球的個(gè)數(shù),后面的也是類似。那么這個(gè)多項(xiàng)式的乘積就把所有的情況都表示出來了,對(duì)于最終乘積的每一項(xiàng)anxn,表示取n個(gè)球有an種取法。

?

? ? 2.有若干個(gè)1克,2克,5克的砝碼,要稱出20克的重量,有多少種稱法?

  這里不限制砝碼的個(gè)數(shù),無所謂,照樣寫出母函數(shù):

  (1+x+x2+x3+......xk+....)(1+x2+x4+x6......+x2n+......)(1+x5+x10+......x5m+......)

  因?yàn)橐Q出20克,所以只需要找找到結(jié)果中次數(shù)為20 的那一項(xiàng)就可以得到結(jié)果。

? ? 3.同樣對(duì)于正數(shù)劃分也可以解決,比如有整數(shù)20,劃分成1,2,5,有多少種劃分方法?

  解法和2的類似。

? ? ?還有一類題目和這類似,有n個(gè)球放到m個(gè)盒子中,有多少種不同的放法?

? ? (1+x+x2+x3+...xk+...)(1+x+x2+x3+...xk+...)(1+x+x2+x3+...xk+...)總共有m項(xiàng),然后找出乘積中次數(shù)為n的那一項(xiàng)系數(shù)。

代碼實(shí)現(xiàn):

模擬多項(xiàng)式的乘積過程,c[i]表示次數(shù)為i的系數(shù),成tempc[]數(shù)組是一個(gè)暫存數(shù)組

該題的母函數(shù)不難得出是(1+x+x2+x3+......xk+....)(1+x2+x4+x6......+x2n+......)(1+x5+x10+......x5m+......)

對(duì)于單位價(jià)值為1的硬幣,不去次數(shù)為0,取一個(gè)次數(shù)為1,取兩個(gè)次數(shù)為2.。。。。。

對(duì)于單位價(jià)值為2的硬幣,不去次數(shù)為0,取一個(gè)次數(shù)為2,取兩個(gè)次數(shù)為4.。。。。。

對(duì)于單位價(jià)值為5的硬幣,不去次數(shù)為0,取一個(gè)次數(shù)為5,取兩個(gè)次數(shù)為10.。。。。。

普通母函數(shù)的精髓就是將組合問題通過次數(shù)及系數(shù)來表示在某次組合中的選擇是怎樣的,如分別選擇多少個(gè)什么種類的東西

c[]數(shù)組初始化為第一個(gè)多項(xiàng)式乘積因子(1+x+x2+x3+......xk+....)的相應(yīng)次數(shù)的系數(shù)

tempc[]數(shù)組暫存多項(xiàng)式乘積因子(1+x+x2+x3+......xk+....)與多項(xiàng)式乘積因子(1+x2+x4+x6......+x2n+......)相乘后相應(yīng)的次數(shù)的系數(shù),并賦給c[]數(shù)組。

注意:此時(shí)c[]數(shù)組存儲(chǔ)的是多項(xiàng)式乘積因子(1+x+x2+x3+......xk+....)與多項(xiàng)式乘積因子(1+x2+x4+x6......+x2n+......)相乘后相應(yīng)的次數(shù)的系數(shù)。

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 int main() 8 { 9 int cent[3]={1,2,5}; 10 int i,j,k,num[3],c[8005],tempc[8005]; 11 while(~scanf("%d%d%d",&num[0],&num[1],&num[2])) 12 { 13 if(num[0]==0&&num[1]==0&&num[2]==0)break; 14 int max=num[0]+num[1]*2+num[2]*5; 15 memset(c,0,sizeof(c)); 16 memset(tempc,0,sizeof(tempc)); 17 for(i=0;i<=num[0]*cent[0];i+=cent[0]) 18 c[i]=1; 19 for(i=1;i<3;i++) 20 { 21 for(j=0;j<=max;j++) 22 for(k=0;k+j<=max&&k<=cent[i]*num[i];k+=cent[i]) 23 tempc[k+j]+=c[j]; 24 for(j=0;j<=max;j++) 25 { 26 c[j]=tempc[j]; 27 tempc[j]=0; 28 } 29 } 30 for(i=0;i<=max;i++) 31 { 32 if(c[i]==0)break; 33 } 34 printf("%d\n",i); 35 } 36 return 0; 37 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/WHLdbk/p/6361362.html

總結(jié)

以上是生活随笔為你收集整理的hdu1085Holding Bin-Laden Captive!组合问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。