猴子选大王—Java单数组、map、数学计算实现

        好久没有登录优快云写东西了,真的是好久了,原因很简单,因为自己松懈了好久,懒惰了好久。以前要求自己每天一篇,那时候虽然算不得勤奋,最起码没有放弃学习。以后要慢慢恢复自己的学习状态。毕竟找工作难找啊,今天到用友的小分部看了看,主管大讲特讲的讲了很多,工作难找啊。

        今天要写的是猴子选大王小程序,这是一个很经典的考题。有M只猴子彼此不服气都想争夺当猴王,打一架强者为王当然行,但和平静气的解决才是王道,解决办法就是猴子们站成一个圈,从1开始报数,每数到规定的N则将第N个猴子淘汰,然后继续从1报数继续按规则淘汰,剩着为王嘛,最后剩下的猴子就是猴王,这样各凭运气,听天之命谁也不要抱怨。问题知道了,想法缕顺了,怎么开始编程呢?

        其实最简单的方法就是用一个循环链表,每次到第N个猴子remove()掉一个猴子,思路简单,代码少(代码后面会贴出),问题是List的好多语法忘记了咋办,那就用最简单的直接单数组实现。

        那么问题来了,用数组怎么实现呢?将编号存在数组里,将下标当做报出的数字进行移动,下标从0开始,然后每到N时,将数组内的编号变为0,然后继续从0开始移动,当到数组末位的时候返回最前面开始数,当遇到编号为0的猴子时候,表示给猴子已经淘汰,跳过该猴子下标继续移动。

         写了这么多汉字就知道这是比较笨的办法,最麻烦的就是条件的编写,哎,好久没接触Jav

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值