使用Java(OpenJDK14)解决:描述输入 输入两个整数n和m,1<=m<=n<=100。 输出 请按退出顺序报出每一只猴子的原序号。数字中间用空格隔开。
时间: 2024-10-24 12:14:48 浏览: 14
Java开发环境Docker镜像:OpenJDK基础与阿里云Ubuntu源优化
在Java中,可以使用递归的方式来解决这个问题。假设有一条从第1只猴子开始、每跳一步就有一只猴子退出的队列,直到只剩下第m只猴子。你需要按照猴子的退出顺序返回它们的原始编号。以下是一个示例Java代码:
```java
import java.util.ArrayList;
import java.util.List;
public class MonkeyOrder {
public static void main(String[] args) {
int n = 10, m = 3; // 输入n和m
List<Integer> result = getMonkeyOrder(n, m);
StringBuilder output = new StringBuilder();
for (int i : result) {
output.append(i).append(" ");
}
System.out.println(output.substring(0, output.length() - 1)); // 去除最后的空格
}
// 递归函数,返回猴子的退出顺序
public static List<Integer> getMonkeyOrder(int n, int m) {
if (m == 1) { // 当只剩一只猴子时,直接返回
List<Integer> list = new ArrayList<>();
list.add(m);
return list;
} else {
List<Integer> order = getMonkeyOrder(n, m - 1); // 递归获取前m-1只猴子的退出顺序
order.add(n); // 将当前猴子添加到最后
return order;
}
}
}
```
当你运行这个程序,它会输出第m只猴子退出后的剩余猴子的原始编号,按照他们实际离开的顺序排列。比如对于输入n=10, m=3,输出将是 "9 8 7"。
阅读全文