0
点赞
收藏
分享

微信扫一扫

【无标题】贪心算法0-1背包

IT影子 2022-01-04 阅读 33
#include<iostream>
using namespace std;

struct Friut{
int id,w,v;
float pr,x;
};
Friut f[5];
void quickSort(Friut *f,int l,int r)
{
	int qSort(Friut *f,int l,int r);
	if(l<r)
	{
		int mid=qSort(f,l,r);
		quickSort(f,l,mid-1);
		quickSort(f,mid+1,r);
	}
}

int qSort(Friut *f,int l,int r)
{

int i=l,j=r+1;
Friut x=f[l];
while(true)
{
while(f[++i].pr>x.pr&&i<=r);
while(f[--j].pr<x.pr);

if(i>=j) break;
Friut t=f[i];
f[i]=f[j];
f[j]=t;
}

f[l]=f[j];
f[j]=x;
return j;

}

void choose(float c){
	int i=0;
	while(f[i].w<=c&&i<=4)
	{
		f[i].x=1;
		c=c-f[i++].w;
		
	}
	if(c>0) f[i].x=c/f[i].w;//0.333=剩下的重量/物品的重量 
}


int main()
{

	for(int i=0;i<5;i++)
	{
	f[i].id=i+1;
	cout<< "输入重量和价值:";
	cin >>f[i].w>>f[i].v;
	f[i].pr=(float)f[i].v/f[i].w;

	}

	quickSort(f,0,4);
	choose(10);
	
	cout<<"id w v pr x:"<<endl;
for(int i=0;i<5;i++)
	{
	
 cout<<f[i].id<< " "<<f[i].w<<" "
 	 <<f[i].v<<" "<<f[i].pr<<" "
	  <<f[i].x<<" "<<endl;
	}
}

举报

相关推荐

0 条评论