前几天一位同学向我推荐了一道算法题,想了一会觉得思路有了,然后某天晚上想把代码撸出来,然后没想到的是:“一入此题深似海,从此头发是路人”。
———————————————————————## 标题 ##
题目的意思大致如下:现在你家里有一群小孩,站成一排,你要给他们分糖果。要求是:相邻两个人之间,年龄大的糖果数量要分的多,(如果相邻两个人年龄一样的话,两人的糖果数量大小没有要求)。你的目标是怎么用最少的糖果满足这些孩子的要求。
题目理解还是挺简单的,感兴趣的同学可以先想想看。这是检验智商的时候到了。
接下来,我将给出自己的解答。仅供参考。
刚好前段时间看了一点“贪心算法”。看到题目之后就自然而然的往“贪心”方面去设计。(贪心算法简要的说就是求解一个大问题的最优解时,每一小步都采取当前最优的策略,最终得到整体最优解,还不懂得自行百度吧)然后设计出来的算法就是:从第一个人开始,给他一个糖果,让往后走,若后一个人比前一个人年龄大,则他的糖果在前一个人的基础上加一,如果若后一个人比前一个人年龄小,则他的糖果在前一个人的基础上减一,如果减到零的话,就往前找到糖果一直减少的第一个人