//【问题描述-猴子选大王】
/*M只猴子要选大王,选举办法如下:所有猴子按1-M编号围坐一圈,从1号开始按顺序1,2,,,K报数,/凡报到K的猴子退出到圈外,如此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.用java实现,并输出最后留下的是谁??*/
下例用list存储姓名,看谁剩到最后一个
import java.util.ArrayList;
import java.util.List;
public class Helloworld {
public static void main(String args[]) {
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
// System.out.println(list);
Helloworld test = new Helloworld();
test.aa(list, 0, 4);
}
/*num为数到几报数*/
public void aa(List list, int mod, int num) {
int count = 0;
int size = list.size();
for (int i = 0; i < size; i++) {
if (list.size() == 1) {
System.out.println(list);
return;
}
if ((i + 1 + mod) % num == 0) {
//关键,因为list的size是变的
list.remove(i - count);
count++;
}
if (i == size - 1) {
//关键
mod = size % num + mod;
this.aa(list, mod, num);
}
}
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hell_liul/archive/2009/07/16/4352978.aspx
分享到:
相关推荐
然而,如题目描述所述,当前的实现存在一个问题:当输入的猴子数量为1且报数为1时,程序会出错。这是因为在这种情况下,移除操作会使头节点失效,导致链表断裂。为了解决这个问题,我们需要对这个特殊情况做出判断:...
本篇文章将通过分析一个具体的Java实现案例来探讨该问题的核心知识点。 #### 二、程序功能概述 根据题目描述,“猴子选王”程序的主要功能是模拟一群猴子围成一圈进行淘汰赛的过程,最终选出“猴王”。具体规则...
一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
这个问题的基本设定是,有一群人(或猴子,在此例中)围成一个圈,按照顺时针方向从某个人开始报数,数到特定数值的人将被排除,然后从下一个人继续报数,直到只剩下最后一个人为止,这个人被称为“大王”或者幸存者...
题目描述:求猴子大王15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子称为大王,问:哪只猴子会成为大王?
n只猴子选大王,排成一圈,依次从1报数,报到3者退出,其余的猴子继续从1报数,直到剩下最后一只,即为大王。 ,史上最简单算法!
在程序的控制结构上,则需要利用if-else和for等循环控制语句来实现报数淘汰猴子的逻辑。 编程实践 在编程过程中,学生首先需要设计一个循环单链表类,包含节点的定义和链表的基本操作方法,例如插入节点、删除节点...
- 编写核心算法,循环报数并删除编号符合规则的猴子,直至剩下最后一只,即为大王。 5. 程序设计思想: - 分析问题,将“猴子选大王”问题转化为约瑟夫环问题的特例,利用循环链表的动态性和循环特性。 - 总体...
n只猴子选大王,排成一圈,依次从1报数,报到3者退出,其余的猴子继续从1报数,直到剩下最后一只,即为大王。 19行代码
37. **环形圈内最后留下的数**:程序37通过模拟圆圈中报数游戏找出最后剩下的数。 38. **字符串长度计算**:程序38要求输入字符串并输出其长度。 39. **奇数和偶数数列求和**:程序39涉及根据输入的数的奇偶性进行...
这些题目涵盖了Java编程的基础知识,包括数学...37. **报数游戏**:模拟报数过程,用数组记录剩余玩家。 这些题目旨在帮助Java初学者熟悉基本语法、控制流和数据结构,通过解决这些问题,可以提升编程能力和逻辑思维。
17.有n个人围成一个圈子,从第一个人开始报数,报到3的退下,问最后留下的是编号为几的人; 18.字符串排序; 19.海滩上有一堆桃子,五只猴子来分,第一只猴子均分成5份,多出一个,扔进海里,自己拿走一份,第二三四...
import java.util.ArrayList; import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";//原字符串 List<String> result = list(s, "");//列出字符的...