讨论 / [DREAM][C++]25行AP
LitDream 2015-07-10 04:06:20
点我顶贴 收藏 删除
#include <cstdio>

#include <cstring>

inline int max(int a,int b){

return a>b?a:b;

}

int main(){

int c,b;

scanf("%d%d",&c,&b);

int f[b+2][c+1];

memset(f,0,sizeof(f));

int x[b+1];

memset(x,0,sizeof(x));

int i;

for(i=1;i<=b;i++) scanf("%d",&x[i]);

for(i=1;i<=b;i++)

for(int j=0;j<=c;j++){

f[i][j]=f[i-1][j];

if(j>=x[i]){

f[i][j]=max(f[i][j],f[i-1][j-x[i]]+x[i]);

if(f[i][j]>j) f[i][j]=j;

}

}

printf("%d",f[b][c]);

return 0;

}

#1 weownit@2015-08-23 08:58:49
回复 删除
#include<cstdio>

int f[22][35001]={0};

int main()

{

int n,c,i,j;

int t[22]={0};

scanf("%d%d",&c,&n);

for(i=1;i<=n;i++)

scanf("%d",&t[i]);

for(i=1;i<=n;i++)

for(j=c;j>=0;j--)

if(t[i]<=j)

f[i][j]= f[i-1][j] > f[i-1][j-t[i]]+t[i] ? f[i-1][j] : f[i-1][j-t[i]]+t[i];

else f[i][j]=f[i-1][j];

printf("%d",f[n][c]);

return 0;

}

#2 Magenta@2015-08-23 23:45:04
回复 删除
gay瑞我要给你表白
#3 hrp-premium@2016-08-11 05:00:26
回复 删除
very interesting 1
查看更多回复
提交回复