Update README.md

master
pjekuohcp 2 years ago
parent 2c4f50456f
commit 7178e69620

@ -1,2 +1,40 @@
# 001
~~~c
#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);
}
~~~
Loading…
Cancel
Save