一道Java算法題

quguiliang 14年前發布 | 2K 次閱讀

100個人圍成一個圈(編號0-99),從第0號的人開始從1報數,凡報到3的倍數的人離開圈子,然后再數下去,直到最后只剩一個人為止,問此人原來的位置是多少號?

 

源代碼復制打印

  1. class Test   
  2. {   
  3.     public static void main(String[] args)   
  4.     {   
  5.         int count = 100;   
  6.         //剩余人數   
  7.         int leavings = count;   
  8.         int[] all = new int[count];   
  9.         //index人物編號,counter報數   
  10.         int index = 0, counter = 0;   
  11.         while (true)   
  12.         {   
  13.             //人物對應的值為-1表示出局   
  14.             if (all[index] != -1)   
  15.             {   
  16.                 all[index] = index+1;   
  17.                 counter++;   
  18.             }   
  19.             if (counter%3 == 0)   
  20.             {   
  21.                 if (--leavings == 1)   
  22.                 {   
  23.                     System.out.println(index);   
  24.                     break;   
  25.                 }   
  26.                 all[index] = -1;   
  27.             }   
  28.   
  29.             index++;   
  30.             if (index == count-1)   
  31.             {   
  32.                 index = 0;   
  33.             }   
  34.         }   
  35.     }   
  36. }  

 

 本文由用戶 quguiliang 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!