P1164小A点菜

it2026-03-02  13

传送

这是一个典型的背包方案问题,设f[j]为当前价值为j的方案数,则f[j]=f[j]+f[j-a[i]],即当前方案数为选这个的方案数和不选这个东西的方案数,代码如下

#include<iostream> #include<cstdio> #include<cmath> using namespace std; int n,t=1,a[101],m,ans,x,y,f[5000001]; int flag[1000001]; 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]; }

 其余背包方案数问题:

 P2639Bessie的体重

P1049装箱问题

转载于:https://www.cnblogs.com/lcez56jsy/p/10506838.html

相关资源:数据结构—成绩单生成器
最新回复(0)