c语言-背包问题贪心算法
#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语言-背包问题贪心算法相关推荐
- c语言背包问题贪心算法,C/C++语言算法篇(一):贪心算法
贪心算法 正所谓人人都有贪心,C语言算法上的贪心可不是实际意义上的贪心,C语言结构上的贪 心可以说满足两个条件:贪心选择性质和最优子结构性质.满足这两个条件的话就可以尝试用贪心算法解决问题. 贪心选择 ...
- C语言背包问题的算法(附完整源码)
C语言背包问题的算法 背包问题引出 C语言背包问题的算法完整源码(定义,实现,main函数测试) 背包问题引出 想象你是一个小偷,你想从房间里偷东西. 您有一个可以处理最大重量W的背包,并且您想把它装 ...
- 装箱问题c语言函数,C语言基于贪心算法解决装箱问题的方法
本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...
- c语言装箱问题思路,C语言基于贪心算法解决装箱问题的方法
本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...
- 贪心算法 背包问题代码 c语言,用贪心算法求解普通背包问题的C++代码
用贪心算法求解普通背包问题的C++代码 2019年3月6日 125次阅读 来源: 贪心算法 #include #define M 100 void display(int &n,doubl ...
- 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...
一.背包问题描述: 有N种物品和一个重量为M的背包,第i种物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大. 二.解决方法: 1.贪心算 ...
- 背包问题 贪心算法 java_JS基于贪心算法解决背包问题
前面我们分享了关于js使用贪心算法解决找零问题,本文我们接着为大家介绍JS基于贪心算法解决背包问题. 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做 ...
- C语言经典贪心算法之加油站问题(详解)
文章目录 一.贪心算法 二.加油站问题 一.贪心算法 贪心算法暗示一种不追求最优解,只希望找到较为满意解的方法.贪心算法省去了为找最优解要穷尽所有可能而必须耗费大量时间,因此它一般可以快速得到较为满意 ...
- 背包问题贪心算法求解
题目 有一个背包,背包容量是M=150.有7个物品,物品可以分割成任意大小. 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量. 思路 具有最优子结构性质和贪心选择性质.只要是所有物品的总重量 ...
- 背包问题 贪心算法 java_JS基于贪心算法解决背包问题示例
本文实例讲述了JS基于贪心算法解决背包问题.分享给大家供大家参考,具体如下: 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局 ...
最新文章
- 重磅丨We Are SocialHootsuite:2018全球数字报告
- VS下调用Matlab引擎
- python基础知识整理-python入门基础知识点整理-20171214
- python换成中文版_在python中如何将“\”替换为“/”?
- swiper高度自适应_小程序自定义导航自适应高度
- 设计模式——4.抽象工厂模式
- Unhandled exception: org.springframework.beans.factory.BeanDefinitionStoreException
- springboot项目中mybatis实现数据的基本查询
- 文件服务器的未分页内存
- docker构建自己的镜像
- manjaro i3wm 的一些配置
- 某在线学习平台自动挂视频
- n918st能刷Android5吗?,中兴 N918ST中文Recovery刷机教程
- 不要随便点这个网站,你偷偷下载的小电影,他们全都知道!
- 电子商务项目设计(案例)
- 让curl支持IE代理
- 为什么要用python处理excel-以Excel处理为目的学习python还是VBA?
- android开机logo和动画修改
- 联发科linux开发板,MT7688
- 人才引进都选什么大学,哪些世界大学排名更靠谱?