#include<stdio.h>
#define MAX 200typedef 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==2){if(compare2(k,j))k=j;}else{if (compare3(k,j))k=j;   }if(k!=i){swap(p[i],p[k]);swap(w[i],w[k]);swap(X.order[i],X.order[k]);}}}
}void init(){for(int i=0;i<n;i++){X.order[i]=i;X.x[i]=0;}
}void show()
{float total=0,weight=0;for(int i=0;i<n;i++){total+=p[i]*X.x[i];weight+=w[i]*X.x[i];printf("装入的包的序号:%d 装入的份量%.6f\n",X.order[i],X.x[i]);printf("\n 背包的总价值 fp:%.2f,背包的总质量 fw:%.2f\n",total,weight);}
}
void main()
{for(int i=1;i<=3;i++){printf("\t\t 策略%d:\n",i);printf("解向量 x%d:\n",i);init();sort(i);GreedyKnapsack(w);show();}
} 

c语言-背包问题贪心算法相关推荐

  1. c语言背包问题贪心算法,C/C++语言算法篇(一):贪心算法

    贪心算法 正所谓人人都有贪心,C语言算法上的贪心可不是实际意义上的贪心,C语言结构上的贪 心可以说满足两个条件:贪心选择性质和最优子结构性质.满足这两个条件的话就可以尝试用贪心算法解决问题. 贪心选择 ...

  2. C语言背包问题的算法(附完整源码)

    C语言背包问题的算法 背包问题引出 C语言背包问题的算法完整源码(定义,实现,main函数测试) 背包问题引出 想象你是一个小偷,你想从房间里偷东西. 您有一个可以处理最大重量W的背包,并且您想把它装 ...

  3. 装箱问题c语言函数,C语言基于贪心算法解决装箱问题的方法

    本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...

  4. c语言装箱问题思路,C语言基于贪心算法解决装箱问题的方法

    本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...

  5. 贪心算法 背包问题代码 c语言,用贪心算法求解普通背包问题的C++代码

    用贪心算法求解普通背包问题的C++代码 2019年3月6日 125次阅读 来源: 贪心算法 #include #define  M  100 void display(int &n,doubl ...

  6. 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...

    一.背包问题描述: 有N种物品和一个重量为M的背包,第i种物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大. 二.解决方法: 1.贪心算 ...

  7. 背包问题 贪心算法 java_JS基于贪心算法解决背包问题

    前面我们分享了关于js使用贪心算法解决找零问题,本文我们接着为大家介绍JS基于贪心算法解决背包问题. 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做 ...

  8. C语言经典贪心算法之加油站问题(详解)

    文章目录 一.贪心算法 二.加油站问题 一.贪心算法 贪心算法暗示一种不追求最优解,只希望找到较为满意解的方法.贪心算法省去了为找最优解要穷尽所有可能而必须耗费大量时间,因此它一般可以快速得到较为满意 ...

  9. 背包问题贪心算法求解

    题目 有一个背包,背包容量是M=150.有7个物品,物品可以分割成任意大小. 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量. 思路 具有最优子结构性质和贪心选择性质.只要是所有物品的总重量 ...

  10. 背包问题 贪心算法 java_JS基于贪心算法解决背包问题示例

    本文实例讲述了JS基于贪心算法解决背包问题.分享给大家供大家参考,具体如下: 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局 ...

最新文章

  1. 重磅丨We Are SocialHootsuite:2018全球数字报告
  2. VS下调用Matlab引擎
  3. python基础知识整理-python入门基础知识点整理-20171214
  4. python换成中文版_在python中如何将“\”替换为“/”?
  5. swiper高度自适应_小程序自定义导航自适应高度
  6. 设计模式——4.抽象工厂模式
  7. Unhandled exception: org.springframework.beans.factory.BeanDefinitionStoreException
  8. springboot项目中mybatis实现数据的基本查询
  9. 文件服务器的未分页内存
  10. docker构建自己的镜像
  11. manjaro i3wm 的一些配置
  12. 某在线学习平台自动挂视频
  13. n918st能刷Android5吗?,中兴 N918ST中文Recovery刷机教程
  14. 不要随便点这个网站,你偷偷下载的小电影,他们全都知道!
  15. 电子商务项目设计(案例)
  16. 让curl支持IE代理
  17. 为什么要用python处理excel-以Excel处理为目的学习python还是VBA?
  18. android开机logo和动画修改
  19. 联发科linux开发板,MT7688
  20. 人才引进都选什么大学,哪些世界大学排名更靠谱?

热门文章

  1. 使用计算机模拟抛硬币实验动画课件,《模拟掷硬币实验》课件.ppt
  2. 第三方应用软件检测实验室质量管理体系需要符合哪些要求?
  3. Unity 基础资源知识汇总学习
  4. Unity基础知识结构总结
  5. 数据治理--元数据--元数据的作用
  6. HFSS天线设计流程
  7. 黑苹果无线网卡的另一种解决方案
  8. MATLAB代码:全面ADMM算法代码,实现了三种ADMM迭代方式 参考文档:《基于串行和并行ADMM算法的电_气能量流分布式协同优化_瞿小斌》
  9. 如何打开KML和KMZ文件并与卫星影像叠加
  10. 视频教程-Xamarin技术讲座——初级篇-其他