- 使用数组实现约瑟夫环的问题
package woj;
import java.util.Scanner;
public class woj_71 {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext()) {
int N = cin.nextInt();
int m = cin.nextInt();
int[] nums = new int[N+1];
for(int i=1;i<=N;i++) {
nums[i]=i;
}
int count=0;
int tem=1;
int i=1;
while(count<N) {
if(tem==m&&nums[i]!=0) {
tem=1;
count++;
if(count==N) {
System.out.print(nums[i]);
}else {
System.out.print(nums[i]+" ");
}
nums[i]=0;
i=divide_i(i, N);
}else if(nums[i]==0) {
i=divide_i(i, N);
}else {
i=divide_i(i, N);
tem++;
}
}
}
cin.close();
}
public static int divide_i(int i,int N) {
if((i+1)%N==0) {
return i+1;
}else {
return (i+1)%N;
}
}
}
运行结果: