传送

这是一个典型的背包方案问题,设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装箱问题

相关文章:

  • 2021-12-19
  • 2021-09-23
  • 2022-12-23
  • 2021-12-09
  • 2021-06-17
  • 2021-06-13
  • 2022-12-23
  • 2021-08-27
猜你喜欢
  • 2021-08-05
  • 2021-12-29
  • 2021-08-01
  • 2021-07-05
  • 2022-02-14
相关资源
相似解决方案