解题思路:
dp背包问题
注意事项:
关键:非常重要的一点是边界问题的处理,特别是第i种花枚举数量是从1-a[i],不可以从0开始
参考代码:
#include<cstdio> #include<algorithm> using namespace std; const int N = 110; int a[N],dp[N]; int main(void) { //freopen("D:\\input2.txt","r",stdin); int m,n; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); dp[0]=1; for(int i=1;i<=n;i++)//枚举花的种类 { for(int j=m;j>=1;j--)//枚举花盆的数量 { for(int k=1;k<=a[i];k++)//枚举第i种花的数量 { if(j>=k) { dp[j]+=dp[j-k]; } } dp[j]%=1000007; } } printf("%d",dp[m]); return 0; }
0.0分
0 人评分
点我有惊喜!你懂得!浏览:2707 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:443 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:546 |
C语言训练-排序问题<1> (C语言代码)浏览:1351 |
简单的a+b (C语言代码)浏览:652 |
C语言训练-求具有abcd=(ab+cd)2性质的四位数 (C语言代码)浏览:567 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:668 |
字符串对比 (C语言代码)浏览:1413 |
用筛法求之N内的素数。 (C语言代码)浏览:650 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:809 |