版权声明:转载请说明去处,文章仅供学习参考 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);
}
}