HDU 2152
Fruit
Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1651????Accepted Submission(s): 966
于是,很多人們慕名而來,找Lele買水果。
甚 至連大名鼎鼎的HDU ACM總教頭 lcy 也來了。lcy拋出一打百元大鈔,"我要買由M個水果組成的水果拼盤,不過我有個小小的要求,對于每種水果,個數上我有限制,既不能少于某個特定值,也不 能大于某個特定值。而且我不要兩份一樣的拼盤。你隨意搭配,你能組出多少種不同的方案,我就買多少份!"
現在就請你幫幫Lele,幫他算一算到底能夠賣出多少份水果拼盤給lcy了。
注意,水果是以個為基本單位,不能夠再分。對于兩種方案,如果各種水果的數目都相同,則認為這兩種方案是相同的。
最終Lele拿了這筆錢,又可以繼續他的學業了~
?
Input 本題目包含多組測試,請處理到文件結束(EOF)。每組測試第一行包括兩個正整數N和M(含義見題目描述,0<N,M<=100)
接下來有N行水果的信息,每行兩個整數A,B(0<=A<=B<=100),表示至少要買該水果A個,至多只能買該水果B個。
?
Output 對于每組測試,在一行里輸出總共能夠賣的方案數。題目數據保證這個答案小于10^9
?
Sample Input 2 3 1 2 1 2 3 5 0 3 0 3 0 3?
Sample Output 2 12 也是道母函數,和上題1085差不多的,給的兩個數據有范圍限制。只要在第三個for的時候稍作修改就行? 還有就是c1賦初值時稍微注意下就行了~View Code 1 #include"iostream" 2 using namespace std; 3 int main() 4 { 5 int a[105],b[105],c1[105],c2[105]; 6 int n,m; 7 while(cin>>n>>m) 8 { 9 for(int i=0;i<101;i++) 10 { 11 c1[i]=0; 12 c2[i]=0; 13 } 14 for(int i=0;i<n;i++) 15 cin>>a[i]>>b[i]; 16 for(int i=a[0];i<=b[0];i++) 17 c1[i]=1; 18 for(int i=1;i<n;i++) 19 { 20 for(int j=0;j<=m;j++) 21 { 22 for(int k=a[i];j+k<=m&&k<=b[i];k++) 23 c2[j+k]+=c1[j]; 24 } 25 for(int j=0;j<=m;j++) 26 { 27 c1[j]=c2[j]; 28 c2[j]=0; 29 } 30 } 31 cout<<c1[m]<<endl; 32 } 33 return 0; 34 }
?
轉載于:https://www.cnblogs.com/Action-/archive/2012/04/23/2465909.html
總結
- 上一篇: 10个强大的Javascript表单验证
- 下一篇: extjs Combobox级联