题目要求
分析
以前就研究过“约瑟夫环”问题:
《单循环链表求解约瑟夫环问题(Java语言描述)》
《杀人游戏~约瑟夫环(洛谷P1145题题解)》
这里,我们使用队列解决问题这个问题。
每个报数人,看他报的数:
- 如果就是要求的数值,他出局;
- 否则,他被移动到队尾。
嗯,一个尝试。
AC代码(Java语言描述)
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
StringBuilder result = new StringBuilder();
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt(), key = scanner.nextInt();
scanner.close();
for (int i = 1; i <= num; i++) {
queue.offer(i);
}
for (int i = 1; i <= num; i++) {
for (int j = 1; j < key; j++) {
queue.offer(queue.poll());
}
result.append(queue.poll()).append(" ");
}
System.out.println(result.toString().trim());
}
}