(……)
上标签:
(一个神奇的求背包问题方案总数的题)
核心算法:
for(int i=1;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]+=f[j-a[i]];//满足f[j-a[i]]!=0,则f[j]+=f[j-a[i]];f[j]代表总方案数
ac代码(laozibuxiangxiefenxi):
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> using namespace std; int n,m; int a[10000]; long long f[10000]; int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; f[0]=1; for(int i=1;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]+=f[j-a[i]]; cout<<f[m]; return 0; }
发表对z的极其不满
end-