输入第一行N,C,N物品的数量,C背包的大小
下一行输入背包的价值
下一行输入背包的体积
程序如下:
#include<iostream>
typedef struct{
int v;
int t;
}mar;
mar arr[1000];
int i;
int N,C;
int dp(int C,int i){
if(i<0)
return 0;
int x,y;
y=dp(C,i-1);
if(C>=arr[i].t){
x=arr[i].v+dp(C-arr[i].t,i-1);
return x>y?x:y;
}
else
return y;
}
int main(){
while(scanf("%d%d",&N,&C)!=-1){
i=0;
while(i<N){
scanf("%d",&arr[i++].v);
}
i=0;
while(i<N){
scanf("%d",&arr[i++].t);
}
printf("%d"n",dp(C,N-1));
}
}
下一行输入背包的价值
下一行输入背包的体积
程序如下:
#include<iostream>
typedef struct{
int v;
int t;
}mar;
mar arr[1000];
int i;
int N,C;
int dp(int C,int i){
if(i<0)
return 0;
int x,y;
y=dp(C,i-1);
if(C>=arr[i].t){
x=arr[i].v+dp(C-arr[i].t,i-1);
return x>y?x:y;
}
else
return y;
}
int main(){
while(scanf("%d%d",&N,&C)!=-1){
i=0;
while(i<N){
scanf("%d",&arr[i++].v);
}
i=0;
while(i<N){
scanf("%d",&arr[i++].t);
}
printf("%d"n",dp(C,N-1));
}
}

浙公网安备 33010602011771号