极差的贪心算法实现讲解学习.pptVIP

  • 11
  • 0
  • 约1.65千字
  • 约 8页
  • 2020-04-29 发布于浙江
  • 举报
极差的贪心算法实现 数列极差问题描述:给定n个正整数数列,进行如下操作:每次删去两个数a和b,添加一个数a*b+1,直到只剩一个数N。在所有这样的N中,有一个最大Max和最小Min,M=Max-Min是极差。设计程序计算M。 用贪心算法算法思想:对于给定的数列主要问题是如何求最大值和最小值。设有三个数xyz,按题目算法来做结果有下面三种:n1=(x*y+1)*z+1=xyz+z+1,n2=(x*z+1)*y+1=xyz+y+1,n3=(y*z+1)*x+1=xyz+x+1。显然n1n2n3,所以可以得到结论:优先做数列较小值的(a*b+1)运算得到的值大,优先做数列中较大的值的(a*b+1)运算得到的值小。所以贪心算法可以这样设计,先将数列从小到大排列,选出数列中最小的两个数m,n,做n2=m*n,然后把m,n从数列中删除,n1有序插入到数列中,重复上述过程,直到数列中只剩下一个数字,该数字就是所求的最大值;选出数列中最大的两个数a,b做n2=a*b,然后把a,b从数列中删除,n2有序插入到数列中,重复上述过程,直到数列中只剩下一个数字,该数字就是所求的最小值;最后n1-n2就是极差。 #includeiostream using namespace std; const Size=6; void Change(int* a,int* b) { int temp;

文档评论(0)

1亿VIP精品文档

相关文档