1.1-每日一题605

刚开始我把这道题当作了递归来做,所以我在每个节点(可种)设置了两种策略:选择当前点/选择下一个节点。递归栈溢出。

后来根据题解,发现确实是应该用贪心做,原因是:只要当前节点选择种花,最后能种的数量一定不会小于当前节点不种。只要当前节点种了,则种花的数量一定-1,而且不会影响到后续能种花的最大数量。

我犯的第一个错误是,没有一下判断出来这是一道贪心题,认为在当前节点(可种)有两种策略。

在贪心方法的构造过程中,我对“可种”的判定是:

  1.当前节点为0。

  2.1 左=右=0

  2.2 最左 and 右=0

  2.3 最右 and 左=0

这个方法的错误在于,当输入[0], 1时,不能判断出这是合法的。实际上还要将这个情况加入:

  2.4 len=1

将这个条件进行左、右的描述:

  2.4 最左 and 最右

将2.1--2.4分左、右进行总结,有如下结果:

  2.1 最左 or 左=0

  2.2 最右 or 右=0

  2.3 2.1and2.2

这样才是正确的贪心策略,至此结束。

 

posted @ 2021-01-01 20:31  Mirror559  阅读(54)  评论(0)    收藏  举报