貪欲アルゴリズムの例としては、最も費用対効果の設置スペースが限られた宝物です:最適解
、アルゴリズムの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;
}