求软件设计高手进

2024-07-18 11:06:47作者:饭克斯

我们上次也做个这个程序,正好我有,自己做的,很辛苦,童鞋记得加分哈

背包问题。用的贪心法做的

#include

#include

#include

#includetime.h

#includewindows.h

#include

#include

#definenum100

floatp1=0.0,w1=0.0;

intall=0;

voidbagloading(intx[],floatp[],floatw[],floatc,intn)

{

//x[]取值为0或1,x[i]=1当且仅当背包i背装载;

//p[]是物品价值;

//w[]是物品重量;

//c表示背包的容量;

//n表示物品的件数;

floatt,k,pw[num];

inti,j,m,kk;

for(i=0;i<n;i++)

pw[i]=p[i]/w[i];

//对各个点的坐标按由大到小进行排序(使用改进的冒泡排序)

m=n-1;

while(m>0)

{

kk=0;

for(j=0;j<m;j++)

if(pw[j]<pw[j+1])

{

t=p[j];

p[j]=p[j+1];

p[j+1]=t;

k=w[j];

w[j]=w[j+1];

w[j+1]=k;

kk=j;

}

m=kk;

}

//按p/w次序从大到小选择物品

}

intmain()

{

intn;

floatc;

floatp[num];

floatw[num];

intx[num];

inti;

cout<<请输入物品的件数:;

cin>>n;

cout<<请依次输入各物品的价值与重量\n每个物品的价值与重量之间用空格隔开,回车后输入另一个物品:<<endl;

//通过键盘依次输入各物品的价值与重量

for(i=0;i<n;i++)

{

cin>>p[i]>>w[i];

}

cout<<请输入背包的最大容量:;

cin>>c;

//调用函数

bagloading(x,p,w,c,n);

//统计物品的总价值、总重量以及件数并输出

//统计装入物品的价值及重量并输出

for(i=0;i<n;i++)

{if(c<w[i])break;

if(c>=w[i])

cout<<w[i]<<放入背包<<endl;

c-=w[i];

p1=p1+p[i];

w1=w1+w[i];

all++;

}

if(all>0)

{

cout<<该背包共装入的这<<all<<件物品<<endl;

for(i=0;i<n;i++)

if(x[i]==1)

cout<<p[i]<<<<w[i]<<endl;

}

cout<<所装物品总的价值为:<<p1<<endl;

cout<<所装物品总的重量为:<<w1<<endl;

cout<<endl;

system(pause);

return0;

}

看懂了包你过,给分吧

展开全文

热门推荐

相关攻略

猜你喜欢