C语言版贪心算法背包问题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<>

#define N 100

typedef struct bao{

int num;

float w;

float v;

};

typedef struct avg{

int num;

(

float val;

float w;

float v;

};

struct bao b[N];

struct avg d[N];

int n;

float c;

^

void Sort()

{

int i,j,k;

struct avg temp[N];

for(i=0;i

{

k = i;

for(j=i+1;j

if(d[k].val

if(k != i)

{

temp[i]=d[i];

d[i]=d[k];

d[k]=temp[i];

}

}

}

float knapsack(){

int i;

float x[N],sum = 0;

for(i=0;i

for(i=0;i

if(d[i].w>c) break;

x[d[i].num] = 1;

sum += d[i].v;

c -= d[i].w;

}

if(i

x[d[i].num] = c/d[i].w;

:

sum += x[d[i].num] * d[i].v;

}

return sum;

}

int main(){

int i,j,k;

float sum;

printf("请输入物品总数:");

scanf("%d",&n);

,

printf("\n请输入背包容量:");

scanf("%f",&c);

printf("\n请输入各物品重量及价值(格式:xx,xx):");

for(i=0;i

scanf("%f,%f",&b[i].w,&b[i].v);

}

for(i=0;i

for(i=0;i

d[i].val = b[i].v/b[i].w;

d[i].v = b[i].v;

d[i].w = b[i].w;

}

Sort();

sum = knapsack();

printf("%.2f\n",sum);

}

相关文档
最新文档