01背包问题——采药C语言
发布网友
发布时间:2023-12-26 16:37
我来回答
共1个回答
热心网友
时间:2023-12-30 14:38
#include <stdio.h>
#include <string.h>
int f[1000+10],w[1000+10],v[1000+10] ;
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
int main()
{
int t,m,i,j;
memset(f,0,sizeof(f));
scanf("%d %d",&t,&m);
for (i=1;i<=m;i++) scanf("%d %d",&w[i],&v[i]);
for (i=1;i<=m;i++){
for (j=t;j>=w[i];j--){
if(w[i]<=t)
f[j]=max(f[j-w[i]]+v[i],f[j]);
}
}
printf("%d",f[t]);
printf("\n");
}