队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

Genet ·
更新时间:2024-09-21
· 903 次阅读

题目要求

P1996题目链接

在这里插入图片描述

分析

以前就研究过“约瑟夫环”问题:
《单循环链表求解约瑟夫环问题(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 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()); } }
作者:进阶的JFarmer



JAVA java语言 队列 约瑟夫问题 p1

需要 登录 后方可回复, 如果你还没有账号请 注册新账号