零度空間

          程序?人生! ——D調 QQ:24859
          posts - 11, comments - 6, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          隨筆分類(11)

          文章分類(3)

          相冊

          友情鏈接

          約瑟夫問題

          Posted on 2006-02-27 17:18 D調 閱讀(963) 評論(0)  編輯  收藏 所屬分類: JAVA

          編號為1,2,3,......,n的n個人按順時針方向圍坐一圈,開始選一正整數(shù)m,從第一人開始,按順時針方向自1開始順序報數(shù),報到m時此人出列,從他在順時針方向的下一個人開始從1報數(shù),如此下去,直至剩一個人,求出個人的編號
          public class Exercise
          {
           public static void main(String args[])
              {  
          int i, j, n, m;

            if(args.length != 2)  //處理參數(shù)數(shù)目不正確情況
            {

             System.out.println("Please Input a number!");
             return;
            }

            n = Integer.parseInt(args[0]);
            m = Integer.parseInt(args[1]);

            if (n <= 0 || m <= 0)
            {
             System.out.println("Paramter Error!");
             return;
            }

            int a[] = new int[n];

            for (i = 0; i < n; i++) a[i] = i + 1;

            int k = 1;   //標識處理第k個離開的人
            i = -1;    //數(shù)組下標,下一個為0,即第一個人

            while (true)
            {

             //在圈中數(shù)m個人
             for (j = 0; j < m;)
             {
              i = (i + 1) % n;
              if (a[i] != 0)   //a[i]不為0表示還沒有離開
              {
               j++;
              }
             }

             if (k == n) break;  //k等于n表示只剩下一個人了

             a[i] = 0;   //表示該人離開
             k++;

            }

            System.out.println("No." + a[i] + " is the winner!");
           }
           }

          主站蜘蛛池模板: 汤阴县| 礼泉县| 高阳县| 苍南县| 台中县| 芦山县| 密云县| 定襄县| 旌德县| 万载县| 巴东县| 铅山县| 阳山县| 乐昌市| 兴业县| 舒城县| 商丘市| 顺平县| 涪陵区| 建阳市| 正定县| 丹凤县| 弋阳县| 元阳县| 阜阳市| 皮山县| 仪陇县| 方山县| 远安县| 察雅县| 龙泉市| 清镇市| 行唐县| 南皮县| 黄浦区| 滕州市| 通州市| 瑞安市| 鄂托克前旗| 鹤山市| 三亚市|