黑马程序员技术交流社区

标题: 写个约瑟夫问题练习一下 [打印本页]

作者: barlay    时间: 2013-12-13 23:17
标题: 写个约瑟夫问题练习一下
本帖最后由 barlay 于 2013-12-14 19:26 编辑

  1. /* 约瑟夫问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 */
  2. public class Josephus{
  3.         public static void main(String[] args) {
  4.                 System.out.println(fun(Integer.valueOf(args[0])));
  5.         }
  6.         public static int fun(int n){
  7.                 int[] arr = new int[n+1];
  8.                 int k = n ,i = 1,j = 1;
  9.                 while(k > 0){
  10.                         if(arr[i] == 0){
  11.                                 if(j != 3){
  12.                                         j++;
  13.                                 }else{
  14.                                         arr[i] = 1;
  15.                                         j = 1;
  16.                                         //System.out.println(i);
  17.                                         if(--k == 0){
  18.                                                 k = i;
  19.                                                 break;
  20.                                         }
  21.                                 }
  22.                         }
  23.                         if(i++ == n)
  24.                                 i = 1;
  25.                 }
  26.                 return k;
  27.         }
  28. }
复制代码
运行测试:
javac Josephus.java
java Josephus 6
输出 1

有没有大神能写个链表的实现啊?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2