约瑟夫问题(顺序结构)

版权声明:转载请说明去处,文章仅供学习参考 https://blog.csdn.net/qq_38487155/article/details/86300931
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);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_38487155/article/details/86300931
今日推荐