太难了,每天刷一道编程题吧(二十)
Posted 我和BB
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了太难了,每天刷一道编程题吧(二十)相关的知识,希望对你有一定的参考价值。
喷水装置分析:因为说了这个装置的半径肯定会大于1,草坪的宽是2,所以这个装置可以看作是这个亚子的:
所以就给整个半径输入从大到小排个序,然后依次去减这个勾股定理算出来的长乘2,最后减到不大于0为止...
网上说这个叫贪心算法,具体的定义啥的见下:
贪心算法是指:
在每一步求解的步骤中,它要求“贪婪”的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解。
贪心算法每一步必须满足一下条件:
1、可行的:即它必须满足问题的约束。
2、局部最优:他是当前步骤中所有可行选择中最佳的局部选择。
3、不可取消:即选择一旦做出,在算法的后面步骤就不可改变了。
贪婪算法并没有固定的算法解决框架,算法的关键是贪婪策略的选择,根据不同的问题选择不同的策略。必须注意的是策略的选择必须具备无后效性,即某个状态的选择不会影响到之前的状态,只与当前状态有关,所以对采用的贪婪的策略一定要仔细分析其是否满足无后效性。
喷水装置代码(Python3):
import Math
n = int(input())
a = list(map(float,input().split(' ')))
a.sort()
a.reverse()
cp = 20
num = 0
for i in range(n):
if cp > 0 :
cp -= Math.sqrt(a[i]**2-1)*2
num += 1
else:
break
print(num)
今日份题目:
以上是关于太难了,每天刷一道编程题吧(二十)的主要内容,如果未能解决你的问题,请参考以下文章