背包问题 codevs2210 数字组合
生活随笔
收集整理的這篇文章主要介紹了
背包问题 codevs2210 数字组合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數字組合
題目描述 Description在N個數中找出其和為M的若干個數。先讀入正整數N和M, 再讀入N個正數(可以有相同的數字,每個數字均在1000以內), 在這N個數中找出若干個數, 使它們的和是M, 把滿足條件的數字組合都找出來以統計組合的個數,輸出組合的個數(不考慮組合是否相同)。要求你的程序運行時間不超過1秒。
輸入描述 Input Description第一行是兩個數字,表示N和M。
第二行起是N個數。
就一個數字,表示和為M的組合的個數。
樣例輸入 Sample Input4 4
1 1 2 2
3
數據范圍及提示 Data Size & Hint1<N<100
1<M<10000
?
大水題
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int n,m; 7 int f[10010],a[110]; 8 int main(){ 9 scanf("%d%d",&n,&m); 10 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 11 f[0]=1; 12 for(int i=1;i<=n;i++) 13 for(int j=m;j>=0;j--) 14 if(f[j]&&j+a[i]<=m) f[j+a[i]]+=f[j]; 15 printf("%d\n",f[m]); 16 return 0; 17 }?
轉載于:https://www.cnblogs.com/sdfzxh/p/7153093.html
總結
以上是生活随笔為你收集整理的背包问题 codevs2210 数字组合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【hdu2825】ac自动机 + 状压d
- 下一篇: 策略模式,工厂模式,单例模式编写身份证的