貪欲アルゴリズムは - 一定の空間の中で最も値を取得します

貪欲アルゴリズムの例としては、最も費用対効果の設置スペースが限られた宝物です:最適解
、アルゴリズムのiostreamのヘッダーファイルを使用して、
ユニバーサルヘッダビット/ STDC ++ Hと直接ここに。

#include<bits/stdc++.h>
using namespace std;
const int M=1000005;  
struct three{
	double w;	//单个宝物所占空间 
	double v;	//单个宝物的价值 
	double p;	// 性价比 
}s[M];
bool cmp(three a,three b)
{
	return a.p>b.p;		//自定义cmp给sort函数根据p即性价比实现从大到小的排列 
} 
int main(){
	int n;		//n表示宝物的数量
	double m;	//m表示空间大小
	cout<<"请输入宝物数量和空间大小"<<endl;
	cin>>n>>m;
	cout<<"请输入宝物所占空间和价值"<<endl;
	for(int i=0;i<n;i++){
		cin>>s[i].w>>s[i].v;
		s[i].p=s[i].v/s[i].w;
	} 
	sort(s,s+n,cmp);
	double sum=0.0; 	//sum表示价值总和
	for(int i=0;i<n;i++){
		if(m>s[i].w){  	//宝物所占空间未超出剩余空间 
			m-=s[i].w;
			sum+=s[i].v;
		}
		else			//宝物所占空间超出剩余空间 
		{
			sum+=m*s[i].p; 	//部分装入计算价值
			break; 
		}
	} 
	cout<<"装入宝物的最大价值= "<<sum<<endl;
	return 0; 
} 
リリース3元の記事 ウォンの賞賛0 ビュー41

おすすめ

転載: blog.csdn.net/qq_44660524/article/details/105033898