题目描述
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的
人退出圈子,问最后留下的是原来第几号的那位?
输入描述
正整数n
输出描述
直接输出结果
/*
* 题目描述
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的
人退出圈子,问最后留下的是原来第几号的那位?
输入描述
正整数n
输出描述
直接输出结果
输入样例
10
输出样例
4
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class N33YueSeFuHuan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
List<Integer> list = new ArrayList<Integer>();
for(int i=1;i<=n;i++){
list.add(i);
}
int k=0,h=1;
while(list.size()>1){
if(k==list.size()){
k=0;
}
if(h==3){
list.remove(k);
h=1;
}else{
k++;
h++;
}
}
System.out.println(list.get(0));
}
}
本文介绍了一个经典的约瑟夫环问题,并提供了一个使用Java实现的具体解决方案。该问题涉及n个人围成一圈进行报数,每次报到特定数字的人将退出圈子,直至最后剩下一人。文章通过代码示例展示了如何通过列表操作来模拟这一过程并找到最终幸存者的编号。
2647

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



