解题思路:
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 人评分
C语言训练-求PI* (C语言代码)浏览:883 |
2^k进制数 (C++代码)使用递归方法浏览:721 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:563 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:724 |
printf基础练习2 (C语言代码)浏览:941 |
校门外的树 (C语言代码)浏览:956 |
【亲和数】 (C语言代码)浏览:501 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:956 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1233 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:613 |