A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© barlay 中级黑马   /  2013-12-13 23:17  /  870 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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

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

评分

参与人数 1黑马币 +10 收起 理由
Sword + 10

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马