翻译下题目:
n个物品,每种物品有无限个,物品体积,现在一共取m个物品,且物品总体积不超V
问方案个数
纯粹的背包dp,没什么说的
#include <iostream>
#include <cstring>
using namespace std;
const int N=503;
int mod;
int n,m,V,a[N],f[N][N];
void solve(){
int i,j,k;
cin>>n>>m>>V>>mod;
for(i=1;i<=n;i++) cin>>a[i];
f[0][0]=1;
for(i=1;i<=n;i++)
for(j=a[i];j<=V;j++)
for(k=1;k<=m;k++)
f[j][k]+=f[j-a[i]][k-1],f[j][k]%=mod;
int ans=0;
for(j=0;j<=V;j++) ans+=f[j][m],ans%=mod;
cout<<ans;
}
signed main(){
solve();
}