贪心算法是一种只考虑眼前利益的思路,不全盘考虑问题的所有可能,每一步做出当时看起来最佳的选择(局部最优选择)
给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包最大承载重量为C。假设物品是不可分割的,应如何选择装入背包的物品,使得装入背包中物品的总价值最大?
花瓶:10公斤 60w 屏风:30公斤 120w 砚台:20公斤 100w
首先我们按照物品的单位重量价值来进行排序,然后按照单位重量价值从高到低依次进行选择,若其能装入背包则将其装入,不能则继续判断下一个直至所有物品都判断完,就得到了问题的一个解。但是对于0-1背包问题贪心算法并不能保证背包全部空间被利用因此背包的单位物品价值就会变低 因此0-1背包问题利用贪心算法并不能求得最优解。
代码如下:
#include<bits/stdc++.h>
using namespace std;
void Sort1(int n,double w[],double v[]){
int max1;
double t[20];
for(int i=1;i<=n;i++){
t[i]=v[i]/w[i];
//cout<<t[i]<<endl;
}
for(int i=1;i<=n;i&