(1)带人名的Josephus环问题
Josephus环问题为:设编号为1,2,…
输入人的个数n(n<=64),接下来每行输入一个人的名字(人名不超过15个字符),接下来输入k和m,k和m之间用逗号隔开。
最后按照人名输出出列的顺序,每行输出一个人名。
如下表给出的样例。
样例输入 | 样例输出 |
5 | Caobainan |
Mazhongyi | Shenyongqiang |
Shenyongqiang | Mazhongyi |
Taozhengyi | Taozhengyi |
Caobainan | Jiangdebing |
Jiangdebing | |
2,3 | |
package 期末算法设计;
import java.util.LinkedList;
import java.util.Scanner;
public class Josephus {
class josephus{
String name ;
}
LinkedList j = new LinkedList<>();
public void getJosephus(){
Scanner read = new Scanner(System.in);
int n = read.nextInt();
for(int i=0;i
public void removeJosephus(){
Scanner read = new Scanner(System.in);
int k=read.nextInt();
int m=read.nextInt()-1;
int r=1;
int i=k;
while(!j.isEmpty()){
i=i%j.size();
if(r%m==0){
System.out.println(j.get(i).name);
j.remove(i);
}
i++;
r++;
}
}
public static void main(String[] args){
Josephus J = new Josephus();
J.getJosephus();
J.removeJosephus();
}
}