太难了,每天刷一道编程题吧(二十)

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)


今日份题目:


以上是关于太难了,每天刷一道编程题吧(二十)的主要内容,如果未能解决你的问题,请参考以下文章

程序员面试华为,面试官出了这样一个面试题,网友:题目太难了!

「学习笔记」3.23代码学习

「学习笔记」3.23代码学习

华为od机考难吗

碰到日期题就怕的我来写一道水题吧

阿里面试Android岗,尽然碰到这两道算法题,太难了吧!