</pre><pre name="code" class="java">import java.util.List;
//来个约瑟夫环吧 10 人 7 出
public class Test1 {
public int ChangeNumber(boolean[] t,int k)throws Exception{
int i=1;
int sayNumber=0;
int falseNumber=0;
System.out.println("t_length----"+t.length);
for(;falseNumber!=t.length;i++){
if(t[i-1]==true){
sayNumber++;//报数加1
sayNumber=sayNumber%k;//取余数
System.out.println(sayNumber+"----"+i);
if(0==sayNumber){
t[i-1]=false;
falseNumber++;//标记为false的总数
System.out.println("***"+falseNumber);
}
i=i%(t.length);//为了i永远小于人数
}else{//什么都不做
i=i%(t.length);
}
}
return i-1;
}
public static void main(String[] args) {
int total=1000;
int key=7;
boolean[] t=new boolean[total];
for(int i=0;i<t.length;i++){
t[i]=true;
}
Test1 test1=new Test1();
try {
int result= test1.ChangeNumber(t, key);
System.out.println(result==0?total:result);//0的话就是最会的那一条数据
} catch (Exception e) {
e.printStackTrace();
}
}
}
java约瑟夫环问题
最新推荐文章于 2024-07-15 15:52:23 发布