java n只猴子选大王,选举方法如下:所有猴子按1、2、……n的顺序围坐一圈,从第1个猴子开始报数,报到m的退出圈子。如此循环报数,直到圈中只剩下一只猴子,即为大王,请编程实现。
时间: 2023-05-19 21:03:21 浏览: 83
以下是 Java 代码实现:
import java.util.ArrayList;
public class MonkeyKing {
public static int findKing(int n, int m) {
ArrayList<Integer> monkeys = new ArrayList<>();
for (int i = 1; i <= n; i++) {
monkeys.add(i);
}
int index = 0;
while (monkeys.size() > 1) {
index = (index + m - 1) % monkeys.size();
monkeys.remove(index);
}
return monkeys.get(0);
}
public static void main(String[] args) {
int n = 10;
int m = 3;
int king = findKing(n, m);
System.out.println("The king is monkey " + king);
}
}
解释:首先创建一个 ArrayList,将所有猴子的编号加入其中。然后使用 while 循环,每次找到要退出圈子的猴子的编号,将其从 ArrayList 中移除。最后剩下的猴子编号即为大王的编号。
阅读全文