1. 程式人生 > >猴子選大王---boolean陣列的實現

猴子選大王---boolean陣列的實現

問題的描述: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只猴子為猴王