// 游戏
import java.util.ArrayDeque;
import java.util.Scanner;
public class 游戏 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayDeque<Integer> q = new ArrayDeque<>(); // 队列
int n = input.nextInt(); // 小朋友的个数
int k = input.nextInt(); // 报到k的倍数的数字 || 报到的数的个位数是k 则淘汰
int index = 1; // 报到的数字
// 添加n个小朋友
for (int i = 1; i <= n ; i++) {
q.add(i);
}
// 一直淘汰到只剩最后一个小朋友
while (q.size() > 1) {
// 满足淘汰条件
if (index % k == 0 || (index - k) % 10 == 0) {
q.poll(); // 移出队列
}else {
q.add(q.poll()); // 将其重新放回队列末
}
index ++; // 报下一个数
}
System.out.print(q.peek()); // 获取仅剩的最后一个小朋友 win!!
}
}
CCF-CSP-201712-2-游戏 JAVA
最新推荐文章于 2021-04-21 20:59:09 发布
本文介绍了一种基于Java的游戏算法实现,通过使用ArrayDeque队列数据结构来模拟游戏过程,实现了报数到特定条件即被淘汰的游戏规则。游戏开始时,所有玩家(用整数表示)加入队列,然后按顺序报数,当报到k的倍数或个位数为k时,该玩家被淘汰出局,直至最后一名玩家胜出。

1140

被折叠的 条评论
为什么被折叠?



