📄 josephus.java
字号:
public class Josephus{
public int p(int a[],int n,int s,int d){ //打印出一个处决犯人的编号
int i;
i=(s+d-1)%n;
System.out.print(a[i]+" ");
return i;
}
public void sort(int a[],int k){ //被处决的犯人由后边的犯人递补上
int length=a.length;
for(int i=k;i<length-1;i++)
a[i]=a[i+1];
}
public static void main(String args[]){
Josephus j=new Josephus();
int N=5,S=0,D=2;
if(args.length>2){
N=Integer.parseInt(args[0]); //第一个参数为犯人个数
S=Integer.parseInt(args[1]); //第二个参数为从哪个犯人开始数数
D=Integer.parseInt(args[2]); //第三个参数为数到几个数处决犯人
}
int n=N,s=S,d=D;
int a[]=new int[N];
for(int i=0;i<N;i++) //数组中存放犯人的编号,第一个犯人在a[0]中,编号为1
a[i]=i+1;
System.out.println("有"+N+"个犯人,从第"+S+"个人开始数起,每数到第"+D+"个犯人,就拉出来处决,处决顺序如下,最后一个犯人可赦免:");
if (s==0){
for(int i=0;i<N;i++){
int k=j.p(a,n,s,d);
j.sort(a,k);
n=n-1;
s=k;
}
} //End of if
else{
s=s-1;
for(int i=0;i<N;i++){
int k=j.p(a,n,s,d);
j.sort(a,k);
n=n-1;
s=k;
}
} //End of else
} // End of main
} // End of class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -