导航:首页 > 源码编译 > 贪心算法解决生活中的问题

贪心算法解决生活中的问题

发布时间:2022-07-24 08:14:56

⑴ 贪心算法的实际问题解决

均分纸牌 #include<cstdio>#include<iostream>#include<cstdlib>inta[1000];usingnamespacestd;intf(intn){intave=0;intf=0;for(inti=1;i<=n;i++){f=f+a[i];}returnf/n;}intmain(){intn;intans=0;intave;scanf(%d,&n);for(inti=1;i<=n;i++){scanf(%d,&a[i]);}ave=f(n);for(inti=1;i<=n;i++){if(a[i]==ave){continue;}if(a[i]!=ave){a[i+1]+=a[i]-ave;ans++;}}printf(%d,ans);return0;}

⑵ 贪心算法解决特殊0-1背包问题

void 0_1_Knapsack(float w[], int n, float c,int x[]) //w[]为每个物品的重量,c为背包容量
{
int i;
for(i=1;i<=n;i++) x[i]=0;
for(i=1;i<=n;i++)
{
if(w[i]>c) break;
x[i]=1;
c-=w[i];
}
}

⑶ 用贪心算法能求解背包问题吗为什么,理由是什么

一般的贪心策略都会造成解的丢失,动态规划则是相当于枚举了所有的解.

如果你有一个很好的贪心策略,背包问题也能用贪心策略来解决.但是,你是很难找到一个很好的贪心策略的.

⑷ 为什么贪心算法不能解0-1背包问题

贪心算法解决背包问题有几种策略:
(i)一种贪婪准则为:从剩余的物品中,选出可以装入背包的价值最大的物品,利用这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品,如此继续下去。这种策略不能保证得到最优解。例如,考虑n=2, w=[100,10,10], p =[20,15,15], c = 105。当利用价值贪婪准则时,获得的解为x= [ 1 , 0 , 0 ],这种方案的总价值为2 0。而最优解为[ 0 , 1 , 1 ],其总价值为3 0。
(ii)另一种方案是重量贪婪准则是:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑n= 2 ,w=[10,20], p=[5,100], c= 2 5。当利用重量贪婪策略时,获得的解为x =[1,0], 比最优解[ 0 , 1 ]要差。
(iii)还有一种贪婪准则,就是我们教材上提到的,认为,每一项计算yi=vi/si,即该项值和大小的比,再按比值的降序来排序,从第一项开始装背包,然后是第二项,依次类推,尽可能的多放,直到装满背包。
有的参考资料也称为价值密度pi/wi贪婪算法。这种策略也不能保证得到最优解。利用此策略试解n=

⑸ 用贪心算法解决背包问题

用贪心算法解决背包问题,首先要明白,结果不一定是全局最优的。对于贪心法而言,首先步骤是找到最优度量标准,我这里的算法采用的最优度量标准是: 收益p/重量w 的值最大者优先放入背包中,所以有算法如下:void GreedyKnapsack(float * x){ //前置条件:w[i]已按p[i]/w[i]的非增次序排列 float u=m; //u为背包剩余载重量,初始时为m for(int i=0;i<n;i++) x[i]=0; //对解向量x初始化 for(i=0;i<n;i++){ //按最优度量标准选择的分量 if(w[i]>u) break; x[i]=1.0; u=u-w[i]; } if(i<n) x[i]=u/w[i];}

⑹ 贪心算法可以解决0-1背包问题吗

这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品,如此继续下去。这种策略不能保证得到最优解。例如,考虑n=2, w=[100,10,10], p =[20,15,15], c = 105。当利用价值贪婪准则时,获得的解为x= [ 1 , 0 , 0 ],这种方案的总价值为2 0。而最优解为[ 0 , 1 , 1 ],其总价值为3 0。 (ii)另一种方案是重量贪婪准则是:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑n= 2 ,w=[10,20], p=[5,100], c= 2 5。当利用重量贪婪策略时,获得的解为x =[1,0], 比最优解

⑺ 什么是贪心算法,用实例分析贪心算法是如何解决实际问题

比如: int a=3,b=4,c; c=a+++b; 将被解释为 c=(a++)+b; 而不会被解释为 c=a+(++b); 贪心算法的主要意义是从左至右依次解释最多的符号!

⑻ 为什么贪心算法可用于解决最优化问题

最优化问题是程序设计中一类非常重要的问题。每一个最优化问题都包含一组约束条件和一个优化函数,满足约束条件的问题求解方案称为问题的可行解,使优化函数取得最优值的可行解称为问题的最优解。贪婪算法是解决最优化问题的一种基本方法。
它采用逐步构造最优解的思想,在问题求解的每一个阶段,都作出一个在一定标准下看上去最优的决策;决策一旦作出,就不可再更改。制定决策的依据称为贪婪准则。

⑼ 请问各位大虾:怎样用贪心算法解决背包问题

贪心只能解决物品可以分割的背包问题,01背包得用动态规划求解

阅读全文

与贪心算法解决生活中的问题相关的资料

热点内容
程序员在你心中是什么 浏览:1
苹果手机怎么找回app账号 浏览:466
房屋中介网站源码 浏览:29
命运格数算法 浏览:852
ets3编程 浏览:730
怎么制作音乐相册的文件夹 浏览:566
宁夏重加密硅灰用法 浏览:231
70个4相乘的简便算法 浏览:291
安卓手机没有机身存储了怎么办 浏览:314
输入法文件夹不能用 浏览:83
发单买多大的云服务器 浏览:331
特价云服务器如何注册 浏览:296
安卓手机账户忘记密码怎么解锁 浏览:821
如何用健身app确定一个特工 浏览:911
多级压缩的原理 浏览:864
java项目开发案例视频 浏览:70
文件夹快速查找表格不同内容 浏览:493
合并排序算法java 浏览:920
如何将文件夹删除的部分恢复 浏览:808
eco为什么连接不上服务器 浏览:294