1. 程式人生 > >約瑟夫問題(順序結構)

約瑟夫問題(順序結構)

package Linear;
/*
 * (順序結構)
 * 約瑟夫問題:n個人圍坐在一張桌子上,從第s個人開始數,數第m個人,該人出局。
 * 			    從下一個人開始數,數第m個人,該人出局。。。迴圈往復直至所有人出局
 */
public class J {
	public static void yuesefuOne(int arr[],int n,int m,int s) {
		int i=0;
		while (i<s-1) { 	//定位到開始座標
			i=(i+1)%n;
		}
		int position=i;
		int j;
		while (n!=0) {
			j=0;
			while (j<m-1) {
				position=(position+1)%n;
				j++;
			}
			remove(arr,position);
			n--;
		}
	}
	public static void remove(int[] arr, int position) {
		System.out.println(arr[position]);
		for (int i = position; i < arr.length-1; i++) {
			arr[i]=arr[i+1];
		}
		if (position==arr.length) {	//如果刪掉的是最後一位元素,指標指向首位
			position=0;
		}
	}
	public static void main(String[] args) {
		int arr[]=new int[]{1,2,3,4,5};
		yuesefuOne(arr, 5, 2, 3);
	}

}