黑马程序员技术交流社区
标题:
发一段今天写的代码
[打印本页]
作者:
梦开始的地方
时间:
2015-1-17 23:28
标题:
发一段今天写的代码
/**约瑟夫问题:一共N个人围一圈报数,数到M的那个人出圈,直到最后一个人,他们出圈的顺序是怎样的。
*/
public class LuckNumberTest1{
public static void getList(int arr[],int digital){
int i=0;
int num=1;//从1开始报数
int n=0;//记录出圈人的个数
for(;i<arr.length && n<arr.length;i++){
if(arr[i]!=-1){//当前这个人是否被标记过,没有则参与报数(数增加)
if(num%digital==0){//把那个数到3的人标记,之后不参与报数
System.out.print(arr[i]+",");
arr[i]=-1;
n++;
}//
num++;
}
if (i==arr.length-1)//转到末尾那个人,进行第二圈
i=-1;
}
}
public static void main(String[] args){
//int[] a={1,2,3,4,5,6,7,8,9,10,11,12,13};//13个人围成一圈
int[] a=new int[]{1,2,3,4,5,6,7,8};
for(int i=0;i<a.length;i++){
a[i]=i+1;
}
getList(a,3);//数到3的人自动退出
}
}
复制代码
作者:
vermouth
时间:
2015-1-18 12:45
java中解决约瑟夫环的话 ,用集合框架什么的吧可能好一点吧,List可以直接remove(m),控制好移除的索引,很简单了。
使用数组这样的数学方法,总忘了到末尾怎么办,学习啦~~{:2_39:}
作者:
梦开始的地方
时间:
2015-1-19 18:53
vermouth 发表于 2015-1-18 12:45
java中解决约瑟夫环的话 ,用集合框架什么的吧可能好一点吧,List可以直接remove(m),控制好移除的索引,很 ...
嗯,你说的那些我会好好去学点,谢谢指点!
作者:
zhaojiajun
时间:
2015-1-19 19:36
现在对这个还不是太熟悉
作者:
Awizard
时间:
2015-1-19 23:59
我一开始也是想到的用boolean[]数组来做,后来想到用list,感觉好方便
作者:
ShadowDancer
时间:
2015-1-20 06:29
学习了!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2