求大神帮忙看看昨天360第一题的01背包那里有问题,跪求


#include<string.h>
#include<algorithm>
using namespace std;



int suan(int a[],int n,int m)//一唯
{

int dp[1055];
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++)
for(int j=m; j>=a[i]; j--)
{
if(j>=a[i])
dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
//dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+a[i]);
}
//return dp[n][m];
return dp[m];
}
int suan2(int a[],int n,int m)//二维
{

int dp[1055][1005];
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++)
for(int j=m; j>=a[i]; j--)
{
if(j>=a[i])
//dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+a[i]);
}
return dp[n][m];
//return dp[m];
}
int main()
{
int n,m;
while(cin>>n>>m)
{
int a[1060];
int b[1060];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1; i<=n; i++)
cin>>a[i];
sort(a+1,a+n+1);
for(int i=1; i<=n-1; i++)
b[i]=a[i];



int ans=suan(b,n-1,m-1);
int ans1=suan2(b,n-1,m-1);
cout<<ans<<endl;
cout<<ans1<<endl;
cout<<ans+a[n]<<endl;
}
}
#360公司#
全部评论
一维写法没毛病,二维看不出来那里有问题
点赞 回复 分享
发布于 2017-09-21 10:11
二维没复制未更新部分。。。
点赞 回复 分享
发布于 2017-09-21 10:15
cout<<ans<<endl; cout<<ans+a[n]<<endl; 请问这一个是什么操作
点赞 回复 分享
发布于 2017-09-21 11:25
点赞 回复 分享
发布于 2017-09-21 11:29
点赞 回复 分享
发布于 2017-10-04 14:29

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务