100個蘋果痰滋,如何拿到最后一個
去鵝廠參加面試的時候摘能,一道筆試題续崖,當時沒有做出來,這里做一下記錄和總結(jié)团搞。
題面
有一堆蘋果严望,一共100個,由你和另外一個人依次拿逻恐,每次拿的數(shù)目不小于1個像吻,并且不大于5個,問要如何拿复隆,才能保證你拿到最后一個拨匆。
分析
- 100個蘋果,想要拿到最后一個挽拂,說明你倒數(shù)第二次拿的數(shù)目剛好大于5個惭每,也就是6個,也就是說你要拿到94個蘋果中的最后一個亏栈;
- 接上一步的結(jié)果台腥,如何拿到94個蘋果中的最后一個,思路是相同的绒北,也就是要拿到88個蘋果中的最后一個览爵;
- 繼續(xù),想要拿到88個蘋果的最后一個镇饮,就要拿到82個蘋果中的最后一個蜓竹;
- 以此類推,每次剛好要剩余6個储藐,
100/6=16...4
俱济,所以要拿到第4個蘋果中的最后一個 - 由此可知,應該由你先拿4個蘋果钙勃,后面根據(jù)另一個人拿的數(shù)目蛛碌,保證你們本輪拿到的評估的數(shù)目的和為6即可(即是解題的方法)
第1步中可不可以剩7個,答案是不行的辖源,如果剩下7個蘋果蔚携,那么另一人可以先拿1個,最后剩余6個克饶,你就拿不到最后一個
那如果剩5個呢酝蜒,那就被另一人一次性都拿走了。
所有重點就是每一輪兩個人取走的蘋果的數(shù)量和一定是6.
結(jié)論
應該由你先拿4個蘋果矾湃,后面根據(jù)另一個人拿的數(shù)目亡脑,保證你們本輪拿到的蘋果的數(shù)目的和為6
即可
思想
從上面的推理過程可以看出,就是使用了一種遞歸的解題思路,遞歸是一種非常常見的解題思想霉咨,有興趣的小伙伴可以更詳細的了解一下
擴展
- 遞歸思想
- 擴展到
n
個蘋果蛙紫,如何拿到最后一個 - 拿的數(shù)目改變?yōu)樽疃嗄?code>X個,那每輪拿的總和為
X+1
個即可 - 該類題目的最后解答途戒,結(jié)果一定是自行可控的坑傅,也就是說一定是自己先拿,并拿了確定的數(shù)目喷斋,接下來才能控制每一輪的總和唁毒;如果換成另一個人先拿,那結(jié)果便不可控继准,這一點很重要。