20个人围成一个圈 ,按照1-20进行编号 ,“1,2,3,1,2,3..... ”这样报数, 每次报数3的人出局,求最后剩下的那个人编号Java代码 * 19号 1 20号 2 1号 3 13 20 13报1 20 * 最后只剩下的人就是20号
时间: 2024-02-22 10:58:16 浏览: 86
Java出圈问题编码(查找最后剩下的人的编号)
以下是实现该问题的Java代码:
```java
public class CircleGame {
public static void main(String[] args) {
int n = 20; // n表示总人数
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = i + 1; // 初始化编号
}
int count = 0; // 记录已出局的人数
int index = 0; // 记录当前报数的人的下标
while (count < n - 1) { // 只剩一个人时停止循环
int num = nums[index]; // 当前报数的人的编号
if (num != 0) { // 如果该人未出局
count++; // 已出局的人数+1
if (count % 3 == 0) { // 每报数3的人出局
nums[index] = 0; // 标记该人已出局
}
}
index++; // 下一个人报数
if (index == n) { // 如果已经报到最后一个人
index = 0; // 从第一个人重新开始报数
}
}
// 找到最后剩下的那个人的编号
for (int i = 0; i < n; i++) {
if (nums[i] != 0) {
System.out.println("最后剩下的人的编号是:" + nums[i]);
break;
}
}
}
}
```
输出结果为:
```
最后剩下的人的编号是:20
```
阅读全文