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.
pjekuohcp 7178e69620
Update README.md
2 years ago
README.md Update 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);
}