其实背包问题比起0/1背包还是简单很多的
- typedef struct
- {
- float p; //价值
- float w; //重量
- float v; //价值重量比
- }OBJECT;
- float knapsack_greedy(float M,OBJECT instance[],float x[],int n)
- {
- int i;
- float m,p=0;
- for(i=0;i<n;i++)
- {
- instance[i].v=instance[i].p;
- x[i]=0;
- }
- merge_sort(instance,n);
- m=M;
- for(i=0;i<n;i++)
- {
- if(instance[i].w<=m)
- {
- x[i]=1;
- m-=instance[i].w;
- p+=instance[i].p;
- }
- else
- {
- x[i]=m/instance[i].p;
- p+=x[i]*instance[i].p;
- break;
- }
- }
- return p;
- }