题解

1 条题解

  • 1
    @ 2020-08-29 16:51:13

    #include<iostream>
    using namespace std;
    int dp[5010][5010],h[110];
    int main()
    {
    int n,i,j,k,sum=0;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>h[i];
    dp[0][0]=1;
    for(i=1;i<=n;i++)
    {
    for(j=sum;j>=0;j--)
    for(k=sum;k>=0;k--)
    {
    if(dp[j][k])
    {
    dp[j+h[i]][k]=1;
    dp[j][k+h[i]]=1;
    }
    }
    sum+=h[i];
    }
    for(i=sum;i>0;i--)
    if(dp[i][i])
    {
    cout<<i;
    return 0;
    }
    cout<<"Impossible";
    return 0;
    }

  • 1

信息

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