题解 | 约瑟夫环
约瑟夫环
https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int m = in.nextInt();
int[] s=new int[n];
int current = k; //当前位置指针
int eliminated = 0; //淘汰人数
int step = 0; //当前步数
while(eliminated < n-1){
if(s[current]==0){ //还没被淘汰
step++;
if(step ==m){
s[current]=1;
step=0;
eliminated++;
}
}
current=(current+1)%n;//移动到下一个人,这样能将当前指针控制在0-n-1循环
}
for(int i=0;i<n;i++){
if(s[i]==0){
System.out.println(i);
}
}
}
}
查看15道真题和解析