约瑟夫环问题

转载 2007年09月15日 17:30:00

两个类:Person.java   GetOut.java
Person.java 人类,包含一个名字属性,一个报数的方法
GetOut.java 计数类,包含一个队列,添加100个人进队列后,经过out()方法,剩下唯一的幸存者。
^_^    勇敢者游戏,I love this game !!

附源程序:
/*
 *  Author   : Lislie
 *  Time     : 2007-9-13  19:32
 *  About    : 100个人做游戏,让100个人围成一个大圈,每个人分别报数,报数方式是从1开始到7结束,报到7的人退出游戏,余下的人继续报数,
 *    从推出的下一个人开始从新报1 ,报7的人退出,一次循环,找出最终获胜选手。
 * Founction: class 人
 *
 * */
package arithmetic.person;

public class Person {
String name;

public Person(String name) {
this.name = name;
}

public int callNum(int a) {
return ++a;
}
}


/*
 *  Author   : Lislie
 *  Time     : 2007-9-13  19:32
 *  About    : 100个人做游戏,让100个人围成一个大圈,每个人分别报数,报数方式是从1开始到7结束,报到7的人退出游戏,余下的人继续报数,
 *    从推出的下一个人开始从新报1 ,报7的人退出,一次循环,找出最终获胜选手。
 * Founction:
 *
 * */
package arithmetic.person;

import java.util.ArrayList;

public class GetOut {

ArrayList array; // 队列

public GetOut(int NUM) {
array = new ArrayList();

// 人类初始化,加入队列中
for(int i=0;i<NUM;i++)
array.add(new Person("a" + i));
}

public Person out() {
int count = 0;   // 喊吧

while(array.size()>1) {
for(int i=0;i<array.size();i++) {
Person p = (Person)array.get(i);
count = p.callNum(count);

// 喊道7,出局  计数从新开始
if(count == 7) {
array.remove(i);
count = 0;   // 计数归0
}
}
}

// 唯一的幸存者
return (Person)array.get(0);
}

public static void main(String args[]) {
int NUM = 100;

GetOut go = new GetOut(NUM);
Person p = go.out();
System.out.println("My name is " + p.name + "!");
}
}

运行结果:
My name is a58!
 

约瑟夫环问题

  • 2016年07月05日 01:41
  • 771B
  • 下载

java simith数和约瑟夫环问题代码

  • 2014年09月23日 18:23
  • 61KB
  • 下载

约瑟夫环问题-数组 / 递推 / 链表

约瑟夫环问题:一圈共有N个人,从1开始报数,报到M的人OUT,然后重新开始报数,问最后OUT的人是谁? /* ①数组:遇到一次m count+1 直到count=n 结束 / 循环n-1次 ...

约瑟夫环问题

  • 2016年05月09日 23:53
  • 54KB
  • 下载

解题笔记(10)——约瑟夫环问题

问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。           思路:容易想到的就是用环链表来做,构建一个环链表,每个结点的...

约瑟夫环问题

  • 2015年05月27日 17:22
  • 898B
  • 下载

约瑟夫环问题

  • 2013年11月24日 18:36
  • 1KB
  • 下载

<c++>利用deque容器,解决约瑟夫环问题

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重...

约瑟夫环问题

  • 2013年11月03日 11:07
  • 975B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:约瑟夫环问题
举报原因:
原因补充:

(最多只允许输入30个字)