#include <iostream> #include <algorithm> using namespace std; struct Goods{ int weight; int value; double per;//单位重量的价值 double load;//装多少权重 }; //定义sort函数比较器 int compare(Goods const&a,Goods const&b){ if(a.per>b.per) return 1; else return 0; } //贪心算法 void Greedy(Goods g[],int good_number,int content){ for(int i=0;i<good_number;i++){ if(g[i].weight<content){ content-=g[i].weight; g[i].load=1; }else if(content>0){ g[i].load=(double)content/g[i].weight; cout<<g[i].load; content=0; } } } int main() { int n; int bag; double total_weight=0; double total_value=0; cout<<"请输入货物种类"; cin>>n; cout<<"请输入背包大小"<<endl; cin>>bag; Goods gs[n+1]; cout<<"请依次输入每种货物的重量和价值"<<endl; for(int i=0;i<n;i++){ cin>>gs[i].weight;
贪心算法实现背包问题(背包可拆分)
本文通过C++实现贪心算法,解决背包问题。程序接收货物的重量和价值,根据单位重量的价值进行排序,然后尽可能多地装载价值高的物品,直到背包无法再装载为止,最终输出总容量和总价值。
摘要由CSDN通过智能技术生成