1. 程式人生 > >P1164小A點菜

P1164小A點菜

i++ new ESS span 問題 ostream int 一個 str

傳送

這是一個典型的背包方案問題,設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裝箱問題

P1164小A點菜