1. 程式人生 > >n 個人圍成一圈(編號1-n),數到3的出列,最後剩下的人的編號

n 個人圍成一圈(編號1-n),數到3的出列,最後剩下的人的編號

問題:

n 個人圍成一圈(編號1-n),數到3的出列,然後又從頭開始數,一直迴圈到最後一個人,請問最後剩下的人的編號?

public int numberToExit(int total, int interval) {
	boolean[] arr = new boolean[total];
	for(int i = 0; i < arr.length; i++) {
		arr[i] = true;
	}
	
	int left = arr.length;
	int count = 0;
	int index = 0;
	while (left > 1) {
		if(arr[index] == true) {
			count++;
			if(count == interval) {
				count = 0;
				arr[index] = false;
				left--;
			}
		}
		// we need to change the index if out of the range.
		index++;
		if(index == arr.length) {
			index = 0;
		}
	}
  
	for(int i = 0;i < arr.length; i++) {
		if(arr[i] == true) {
			return i+1;
		}
	}
	return -1;
}
轉載請註明出處:http://blog.csdn.net/beiyeqingteng