黑马程序员技术交流社区
标题:
写个约瑟夫问题练习一下
[打印本页]
作者:
barlay
时间:
2013-12-13 23:17
标题:
写个约瑟夫问题练习一下
本帖最后由 barlay 于 2013-12-14 19:26 编辑
/* 约瑟夫问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 */
public class Josephus{
public static void main(String[] args) {
System.out.println(fun(Integer.valueOf(args[0])));
}
public static int fun(int n){
int[] arr = new int[n+1];
int k = n ,i = 1,j = 1;
while(k > 0){
if(arr[i] == 0){
if(j != 3){
j++;
}else{
arr[i] = 1;
j = 1;
//System.out.println(i);
if(--k == 0){
k = i;
break;
}
}
}
if(i++ == n)
i = 1;
}
return k;
}
}
复制代码
运行测试:
javac Josephus.java
java Josephus 6
输出 1
有没有大神能写个链表的实现啊?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2