好久没有登录优快云写东西了,真的是好久了,原因很简单,因为自己松懈了好久,懒惰了好久。以前要求自己每天一篇,那时候虽然算不得勤奋,最起码没有放弃学习。以后要慢慢恢复自己的学习状态。毕竟找工作难找啊,今天到用友的小分部看了看,主管大讲特讲的讲了很多,工作难找啊。
今天要写的是猴子选大王小程序,这是一个很经典的考题。有M只猴子彼此不服气都想争夺当猴王,打一架强者为王当然行,但和平静气的解决才是王道,解决办法就是猴子们站成一个圈,从1开始报数,每数到规定的N则将第N个猴子淘汰,然后继续从1报数继续按规则淘汰,剩着为王嘛,最后剩下的猴子就是猴王,这样各凭运气,听天之命谁也不要抱怨。问题知道了,想法缕顺了,怎么开始编程呢?
其实最简单的方法就是用一个循环链表,每次到第N个猴子remove()掉一个猴子,思路简单,代码少(代码后面会贴出),问题是List的好多语法忘记了咋办,那就用最简单的直接单数组实现。
那么问题来了,用数组怎么实现呢?将编号存在数组里,将下标当做报出的数字进行移动,下标从0开始,然后每到N时,将数组内的编号变为0,然后继续从0开始移动,当到数组末位的时候返回最前面开始数,当遇到编号为0的猴子时候,表示给猴子已经淘汰,跳过该猴子下标继续移动。
写了这么多汉字就知道这是比较笨的办法,最麻烦的就是条件的编写,哎,好久没接触Jav