MnZn刚学01背包求助
查看原帖
MnZn刚学01背包求助
250699
mot1ve楼主2023/4/5 20:13

//感觉就是个01背包求方案数问题,为什么不对呢

#include<bits/stdc++.h>
using namespace std;
int n,maxn;
int a[110];
int f[100010];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        maxn+=a[i];
    }
    f[0]=1;
    for(int i=1;i<=n;i++)
    {
        for(int j=maxn;j>=0;j--)
        {
            f[j]|=f[abs(j-a[i])];
            f[j]|=f[j+a[i]];
        }
    }
    int ans=0;
    for(int i=1;i<=maxn;i++)
    {
        if(f[i])
        ans++;
    }
    cout<<ans;
    return 0;
} 
2023/4/5 20:13
加载中...