早教吧作业答案频道 -->数学-->
请教用贪心算法求解数列的极差M问题在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在
题目详情
请教用贪心算法求解数列的极差M问题
在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min.希望大家能给出具体实现的算法(C/C++)
可以参照下面的提示来写:
把求解max与min的过程分开,着重探讨求max的问题。
讨论:假设经(N-3)次变换后得到3个数:a,b,max'(max’≥a≥b),其中max’是(N-2)个数经(N-3)次f变换后所得的最大值,此时有两种求值方式,设其所求值分别为 则有:=(a×b+1)×max’+1,=(a×max’+1)×b+1 所以 - =max’-b≥0若经(N-2)次变换后所得的3个数为:b(m≥a≥b)且m不为(N-2)次变换后的最大值,即m<max’则此时所求得的最大值为:=(a×b+1)×m+1 此时 - =(1+ab)(max’-m)>0 所以此时不为最优解。
所以若使第k(1≤k≤N-1)次变换后所得值最大,必使(k-1)次变换后所得值最大(符合贪心策略的特点2),在进行第k次变换时,只需取在进行(k-1)次变换后所得数列中的两最小数p,q施加f操作:p←p×q+1,q←∞即可,因此此题可用贪心策略求解。讨论完毕。
在求min时,我们只需在每次变换的数列中找到两个最大数p,q施加作用f:p←p×q+1,q←-∞即可.原理同上。
在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min.希望大家能给出具体实现的算法(C/C++)
可以参照下面的提示来写:
把求解max与min的过程分开,着重探讨求max的问题。
讨论:假设经(N-3)次变换后得到3个数:a,b,max'(max’≥a≥b),其中max’是(N-2)个数经(N-3)次f变换后所得的最大值,此时有两种求值方式,设其所求值分别为 则有:=(a×b+1)×max’+1,=(a×max’+1)×b+1 所以 - =max’-b≥0若经(N-2)次变换后所得的3个数为:b(m≥a≥b)且m不为(N-2)次变换后的最大值,即m<max’则此时所求得的最大值为:=(a×b+1)×m+1 此时 - =(1+ab)(max’-m)>0 所以此时不为最优解。
所以若使第k(1≤k≤N-1)次变换后所得值最大,必使(k-1)次变换后所得值最大(符合贪心策略的特点2),在进行第k次变换时,只需取在进行(k-1)次变换后所得数列中的两最小数p,q施加f操作:p←p×q+1,q←∞即可,因此此题可用贪心策略求解。讨论完毕。
在求min时,我们只需在每次变换的数列中找到两个最大数p,q施加作用f:p←p×q+1,q←-∞即可.原理同上。
▼优质解答
答案和解析
假设经(N-3)次变换后得到3个数:a,b,max'(max’≥a≥b),其中max’是(N-2)个数经(N-3)次f变换后所得的最大值,此时有两种求值方式,设其所求值分别为 ,,则有:=(a×b+1)×max’+1,=(a×max’+1)×b+1 所以 - =max’-b≥0若经(N-2)次变换后所得的3个数为:m,a,b(m≥a≥b)且m不为(N-2)次变换后的最大值,即m<max’则此时所求得的最大值为:=(a×b+1)×m+1 此时 - =(1+ab)(max’-m)>0 所以此时不为最优解.
所以若使第k(1≤k≤N-1)次变换后所得值最大,必使(k-1)次变换后所得值最大(符合贪心策略的特点2),在进行第k次变换时,只需取在进行(k-1)次变换后所得数列中的两最小数p,q施加f操作:p←p×q+1,q←∞即可,因此此题可用贪心策略求解.讨论完毕.
在求min时,我们只需在每次变换的数列中找到两个最大数p,q施加作用f:p←p×q+1,q←-∞即可.原理同上
所以若使第k(1≤k≤N-1)次变换后所得值最大,必使(k-1)次变换后所得值最大(符合贪心策略的特点2),在进行第k次变换时,只需取在进行(k-1)次变换后所得数列中的两最小数p,q施加f操作:p←p×q+1,q←∞即可,因此此题可用贪心策略求解.讨论完毕.
在求min时,我们只需在每次变换的数列中找到两个最大数p,q施加作用f:p←p×q+1,q←-∞即可.原理同上
看了请教用贪心算法求解数列的极差M...的网友还看了以下:
用铁锤把小铁钉钉入木板,设木板对钉子的阻力与钉进木板的深度成正比,已知铁锤第一次将钉子钉进d,如果 2020-05-22 …
把长为l的铁钉钉入木板中,每打击一次给予的能量为E0,已知钉子在木板中遇到的阻力与钉子进入木板的深 2020-06-15 …
用锤子把钉子打入木板,已知木板对钉子的阻力与钉子进入的深度成正比,即f=kx,锤子打击第一次时把钉 2020-07-07 …
用锤击钉,设木板对钉子的阻力跟钉子进入木板的深度成正比,每次击钉时锤子对钉所做的功相同,已知锤击第 2020-07-07 …
用铁锤将一铁钉打入木板,设木板对铁钉的阻力与铁钉进入木板的深度成正比.在铁锤击打铁钉第一次时,能将 2020-07-08 …
大学物理题求助用铁锤把钉子敲入墙面木板,设木板对钉子的阻力与钉子进入木板深度成正比.若第一次敲击, 2020-07-16 …
用铁锤将一铁钉钉入木板,设木板对铁钉的阻力与铁钉钉入木板的深度成正比,第一次将铁钉钉入木板2cm, 2020-07-24 …
用铁锤将一铁钉击入木板,设木板对铁钉的阻力与钉进入木块内的深度成正比.在铁锤击打第一次后,能把铁钉击 2020-10-30 …
用铁锤把小铁钉钉入木板,设木板对钉子的阻力与钉进木板的深度成正比已知铁锤第一次将钉子钉进的深度为d, 2020-10-30 …
物理变力做功要把长为L的铁钉钉入木板中,设每打击一次,锤子对钉子做的功均为W,已知钉子在木板中受到的 2020-10-30 …