目录
1 实验名称
贪心算法的应用
2 实验目的
通过本实验,掌握贪心算法解决问题的算法效率分析方法,运用贪心算法解决问题的思想,解决实际问题。
3 实验内容
理解贪心算法的内涵,并能够解决实际问题,如:背包问题、活动安排等问题,并对算法进行分析。打印输出。
4 实验设计及实现
4.1 背包问题
4.1.1 方法代码一
#include<stdio.h>
#define MAX 200
typedef struct Solution
{
float x[MAX]; //表示该号物品放在多少背包里
int order[MAX];//表示物品的序号,相当其名字
}Solution;
Solution X;
int m=15;//背包容量
int n=7;//物品数量
int p[]={10,5,15,7,6,18,3};
int w[]={2,3,5,7,1,4,1};
void GreedyKnapsack(int weight[]){
float cu;
int i;
cu=float(m);
for(i=0;i<n;i++){
if(weight[i]>cu)
break;
X.x[i]=1;
cu=cu-weight[i];
}
if(i<n){
X.x[i]=cu/weight[i];
}
}
//按价值排序
bool compare1(int i,int j){
if((p[i]<p[j]))
return true;
else return false;
}
//按重量排序
bool compare2(int i,int j){
if((w[i]>w[j]))
return true;
else return false;
}
// 按价值/重量排序
bool compare3(int i,int j){
if((float)(p[i]/w[i]<p[i]/w[j]))
return true;
else return false;
}
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
void sort(int type){
int i,j;
for(i=0;i<n-1;i++){
int k=i;
for(j=i+1;j<n;j++){
if(type==1){
if(compare1(k,j))
k=j;
}
else if(type&