?? 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){ //被處決的犯人由后邊的犯人遞補(bǔ)上
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]); //第一個參數(shù)為犯人個數(shù)
S=Integer.parseInt(args[1]); //第二個參數(shù)為從哪個犯人開始數(shù)數(shù)
D=Integer.parseInt(args[2]); //第三個參數(shù)為數(shù)到幾個數(shù)處決犯人
}
int n=N,s=S,d=D;
int a[]=new int[N];
for(int i=0;i<N;i++) //數(shù)組中存放犯人的編號,第一個犯人在a[0]中,編號為1
a[i]=i+1;
System.out.println("有"+N+"個犯人,從第"+S+"個人開始數(shù)起,每數(shù)到第"+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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -