</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-03 02:15:52 发布
本文介绍了一个通过Java实现的约瑟夫环问题解决方案。该程序采用布尔数组记录参与者的状态,通过循环计数的方式模拟报数过程,最终确定幸存者的位置。适用于了解和学习约瑟夫环算法及其实现细节。

4831

被折叠的 条评论
为什么被折叠?



