Java猴子選大王
阿新 • • 發佈:2018-11-26
Java猴子選大王
最近學Java,看到一個猴子選大王的問題,說有N只猴子圍成一圈,猴子們定義一個數,從第一隻猴子開始數,數到這個數的被淘汰掉,再依次進行,剩下的最後一隻猴子就是大王。
這個問題需要定義一個數組來存放這些猴子,然後需要用到判斷迴圈等條件來淘汰猴子。
package cn.com.www; import java.util.*; public class TMonkey { public static void main(String[] args) { // TODO 自動生成的方法存根 System.out.println("輸入猴子數:"); int N =new Scanner(System.in).nextInt(); //輸入選大王的猴子的數目 int[] str=new int [N]; int test=0;//標記新起點 int num=N;//每輪的剩下猴子數 int last=0; for(int i=0;i<str.length;i++)//給猴子賦值數 { str[i]=1; } while(num!=1) //當不為1的時候,跳出迴圈 { if(str[test]==1) //讓猴子的名字為1的進入選大王的隊伍 { last++;//相當於是個計數器,到那個數的猴子被淘汰掉 if(last==3)//我這裡定義的是第三隻猴子被淘汰掉 { last=0; str[test]=-1; //將到那個數的猴子名字取負值,當然也可以取別的值,只要後邊能判斷就行 num--; } } test++; if(test==str.length)//如果test與猴子的數目相同,需要重頭來算 { test=0; } } for(int k=0;k<str.length;k++) { if(str[k]>0)//最後剩下的猴子大王是正值 { k=k+1; System.out.println("第"+k+"是猴子王"); //輸出這一隻猴子的位置 } } } }