题解

1 条题解

  • 1
    @ 2020-08-30 15:16:38

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;

    const int MAXV=11000;
    const int MAXN=105;
    bool f[MAXV],g[MAXV];
    int n;

    void init()
    {
    scanf("%d",&n);
    }

    void DP()
    {
    for(int i=0;i<=10000;i++)
    f[i]=1;
    for(int i=1;i<=n;i++)
    {
    memset(g,0,sizeof(g)); g[0]=1; int x=0;
    while(scanf("%d",&x)==1&&x!=-1)
    {
    for(int j=10000;j>=0;j--)
    if(g[j])
    g[j+x]=1;
    }
    for(int j=0;j<=10000;j++)
    f[j]&=g[j];
    }
    for(int j=10000;j>=0;j--)
    if(f[j])
    {
    printf("%d\n",j);
    return;
    }
    }

    int main()
    {
    init();
    DP();
    }

  • 1

信息

ID
1043
难度
9
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
1
已通过
1
通过率
100%
上传者