You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
2 years ago | |
---|---|---|
README.md | 2 years ago |
README.md
#include<stdio.h>
#define max(x,y)((x)>(y)?(x):(y))
#define MAXN 20
int n = 5,W = 10;
int w[MAXN] = {0,2,4,5,6};
int v[MAXN] = {0,2,2,3,5};
int maxv = 0;
int knap(int i,int r){
if(i==0||r==0){
return 0;
}
if(r<w[i]){
knap(i-1,r);
} else{
return max(knap(i-1,r),knap(i-1,r-w[i])+v[i]);
}
}
int main(){
maxv = knap(n,W);
printf("求解的最优结果(最优方案)\n");
printf("选取的物品:");
int x[MAXN] = {0};
int i=n,r = W;
while(i>=0&&r>0){
if(i>0&&knap(i,r)!=knap(i-1,r)){
x[i]=1;
r = r-w[i];
}
i--;
}
for(i=1;i<=n;i++){
if(x[i]==1){
printf("%d ",i);
}
}
printf("\n");
printf("总价值=%d",maxv);
}