猴子選大王---boolean陣列的實現
阿新 • • 發佈:2018-12-23
問題的描述:15個猴子圍成一圈選大王, 依次1-7迴圈報數, 報到7的猴子被淘汰, 直到最後一隻猴子成為大王。 問: 哪隻猴子會成為大王?
本文嘗試用boolean陣列進行實現,程式碼如下所示:
package UNI; import java.util.Arrays; public class monkey { public static void main(String[] args) { //定義一個狀態陣列(false表示還沒被淘汰,false表示已被淘汰) boolean[] state=new boolean[15]; //報數 int count=0; //下標 int i=0; while ((contains(state))) { //定義一個環形的猴子圈 i=(i==15)?0:i; //記數 if (!state[i]) { count++; } i++; if (count%7==0) { state[i-1]=true; count=0; } if (Num(state)==14) { break; } } System.out.println(Arrays.toString(state)); } //構造一個判斷是否含有false的方法 private static boolean contains(boolean[] ss) { for (int i = 0; i < ss.length; i++) { if (!ss[i]) { return true; } } return false; } private static int Num(boolean[] tt) { int count=0; for (int i = 0; i <tt.length; i++) { count=(tt[i]==true)?(count+1):count; } return count; } }
執行結果如下:
[true, true, true, true, false, true, true, true, true, true, true, true, true, true, true]
我們可以發現第5只猴子為猴王