求大神帮忙找错

#include <iostream>
#include <cmath>
using namespace std;
int h[10005];
int sum=0;
int dp[1005][1005];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>h[i];
sum+=h[i];
}
for(int i=0;i<=n;i++)
for(int j=0;j<=sum;j++)
dp[i][j]=-99999999;
dp[0][0]=0;
for(int i=1;i<=n;i++)
for(int j=sum;j>=0;j--)
{
dp[i][j]=max(dp[i][j],dp[i-1][j]);
dp[i][j]=max(dp[i][j],dp[i-1][j+h[i]]+h[i]);
dp[i][j]=max(dp[i][j],dp[i-1][abs(j-h[i])]);
}
if(dp[n][0]>0)
cout<<dp[n][0];
else
cout<<"Impossible";
return 0;
}

1 条评论

  • 1

信息

ID
1037
难度
6
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
10196
已通过
2653
通过率
26%
被复制
5
上传者