Josephu 问题 java编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 21:44:30
Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。

/**
* wsir
* 功能:丢手帕问题,Josephu 问题
*/
package com.wsir;

public class Demo {

public static void main(String[] args) {
// TODO Auto-generated method stub
CycLink cyclink = new CycLink();
cyclink.setLen(5);
cyclink.creatLink();
cyclink.setK(2);
cyclink.setM(2);
cyclink.show();
cyclink.play();
}

}

class Child {
int no;
Child nextChild = null;

public Child(int no) {
// 给一个编号
this.no = no;
}
}

// 环形链表
class CycLink {
// 先定义一个指向链表第一个小孩的引用
// 指向第一个小孩的引用,不能动
Child firstChild = null;
Child temp = null;
int len = 0;// 表示共有几个小孩
int k = 1;
int m = 0;

// 设置m
public void setM(int m) {
this.m = m;
}

// 设置环形链表大小
public void setLen(int len) {
this.len = len;
}

// 设置从第几个人开始数数
public void setK(int K) {
this.k = k;

}