約瑟夫問題(順序結構)
阿新 • • 發佈:2019-01-13
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); } }