import java.util.Scanner;
public class joseph {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
System.out.println("输入总人数:");
int total = s.nextInt();
System.out.println("输入报名数:");
int num = s.nextInt();
Node n1 = new Node(1);
Node pointer = n1;
for (int i = 2; i <= total; i++) {
pointer.next = new Node(i);
pointer = pointer.next;
}
pointer.next = n1;
while (pointer != pointer.next) {
for (int i = 1; i < num; i++) {
pointer = pointer.next;
}
System.out.println(pointer.next.number);
pointer.next = pointer.next.next;
}
System.out.println(pointer.number);
}
}
分享到:
相关推荐
用数组实现约瑟夫出圈问题。 n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。对于给定的n,m,编写程序求出所有人的出圈顺序。
cpp文件内采用两种方式实现经典的约瑟夫出圈问题,分别以数组方式和链表方式实现。同时,也可以实现直接输出最后的获胜者。
约瑟夫出圈问题:(用数组实现) 由m个人围成首尾相连的圈报数,从第1个人开始报,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人出圈为止。对于给定的m和n(从键盘上输入),求出所有人的出圈顺序。
解决约瑟夫出圈问题的实现代码,大家共享 如果你有更好的资源,请给我来一份 package maicle; import java.util.LinkedList; public class Linklist { static int M=5;//选择第几个人出圈 static int N=10;//人数 ...
约瑟夫(Joseph)出圈问题 C++
约瑟夫出圈问题源码,corejava实现
N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。 定义一个类,然后在类前定义一个结构体 2、在类中定义一个链表...
设有n各人坐在一圈,并按顺时钟方向从1到n编号,从第s个人开始进行1到m的报数,报到第m个人,此人出圈,再从他的下一个人重新开始从1到m的报数,如此进行下去直到所有的人出去为止。要求按出圈次序每十人为一组,给...
用循环单向链表解决约瑟夫问题 原题: 设有n个人站成一圈,每个人持有一个密码(正整数)。现从第t个人开始,按顺时针方向“1,2,3,4,…”循环报数,数到m1(第t个人所持密码)的人出列,然后从出列者的下一个人重新...
问题表述: 约瑟夫问题的一种描述是:编号为1,2,••••,n的n个人安顺序时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺指针方向自1开始顺序报...
约瑟夫环 问题求解 C语言 约瑟夫环 问题求解 C语言 约瑟夫环 问题求解 C语言
约瑟夫问题:N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人重新开始报数,数到M的人出圈;…输出依次出圈的人的编号。N,M由键盘输入。
java实现约瑟夫环问题Josephus 约瑟夫问题 * 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k(1,2,3...n)的人开始报数,数到m(1,2,3...)的那个人出列; * 他的下一个人又从1...求出圈顺序
约瑟夫环问题描述:编号为1,2,…,n的n个人按顺时针方向围成一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的人出列,将...
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 分析: (1)由于对于每个人只有死和活两种...
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。 假定在圈子里前K个为好人,后K...
设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报到第M个人时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止,打印出圈次序。
约瑟夫环问题,用循环链表实现,最后输出胜利者