#include<stdio.h>
int max1(int a,int b){
if(a>b){
return a;
}else{
return b;
}
}
int beibao(int m){
int value[m]={0},weight[m]={0},max;
int dp[m+1]={0};
printf("请输入背包的最大容量\n");
scanf("%d",&max);
printf("请输入各物品的重量:\n");
for(int i=0;i<m;i++){
scanf("%d",&weight[i]);
}
printf("请输入各物品的价值:\n");
for(int i=0;i<m;i++){
scanf("%d",&value[i]);
}
dp[0]=0;
for(int i=0;i<m;i++){
for(int j=max;j>=weight[i];j--){
dp[j]=max1(dp[j],dp[j-weight[i]]+value[i]);
}
}
return dp[max];
}
int main(){
int m;
scanf("%d",&m);
int n=beibao(m);
printf("背包的最大价值为:%d",n);
return 0;
}
1.0-1背包问题
于 2023-03-12 21:33:04 首次发布