ジョセフリングについてもお話ししますので、ご指摘ください
1612 ワード
import java.util.ArrayList;
import java.util.List;
public class Josephus {
//
public static void main(String[] args) {
int result;
int temp;
List list=new ArrayList();
// N
if(args[0]==null) args[0]="0";
// M
if(args[1]==null) args[1]="0";
int n=Integer.parseInt(args[0]);
int m=Integer.parseInt(args[1]);
// N
for(int i=1;i<=n;i++){
Integer ii=new Integer(i);
list.add(ii);
}
while(list.size()>1){
int size=list.size();
temp=m;
// ,
if(size>=temp){
result=temp;
m=Integer.parseInt(list.get(result-1).toString());
System.out.println(list.get(result-1));
list.remove(result-1);
size--;
}else{// ,
result=m%size;
if(result==0) result=size;
m=Integer.parseInt(list.get(result-1).toString());
System.out.println(list.get(result-1));
list.remove(result-1);
size--;
}
//
List templist=new ArrayList();
for(int jj=result-1;jj<list.size();jj++){
templist.add(list.get(jj));
}
for(int ii=0;ii<result-1;ii++){
templist.add(list.get(ii));
}
list=templist;
//System.out.println(list);
}
System.out.println("The last one is:--"+list.get(0));
}
}
個人的には効率が悪いと思いますが、ループのリストを再生成するので、まず結果を考えてから最適化しましょう.