java实现n只猴子选大王,选举方法如下:所有猴子按1、2、……n的顺序围坐一圈,从第1个猴子开始报数,报到m的退出圈子。如此循环报数,直到圈中只剩下一只猴子,即为大王,请编程实现。
时间: 2023-05-19 20:03:08 浏览: 134
c++实现猴子选大王
好的,这是一个经典的约瑟夫问题,可以使用链表来模拟猴子围成的圈。以下是Java代码实现:
```
import java.util.*;
public class MonkeyKing {
public static int findKing(int n, int m) {
LinkedList<Integer> monkeys = new LinkedList<>();
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 = 5;
int m = 3;
int king = findKing(n, m);
System.out.println("The king is monkey " + king);
}
}
```
在这个实现中,我们使用了LinkedList来表示猴子围成的圈,每次找到需要退出的猴子的位置,然后将其从链表中移除。最后剩下的那只猴子就是大王。
阅读全文