/*
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 */
/*复制的代码*/
import java.util.Scanner;
public class Test37{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入总人数:");
int n = s.nextInt();
boolean[] arr = new boolean[n];
for(int i=0; i<arr.length; i++) {
arr[i] = true;//下标为TRUE时说明还在圈里
}
int leftCount = n; //圈中剩下的人数
int countNum = 0;
int index = 0;
while(leftCount > 1) {
if(arr[index] == true) {//当在圈里时
countNum ++; //报数递加
if(countNum == 3) {//报道3时
countNum =0;//从零开始继续报数
arr[index] = false;//此人退出圈子
leftCount --;//剩余人数减一
}
}
index ++;//每报一次数,下标加一
if(index == n) {//是循环数数,当下标大于n时,说明已经数了一圈,
index = 0;//将下标设为零重新开始。
}
}
System.out.print("最后剩下的是:");
for(int i=0; i<n; i++) {
if(arr[i] == true) {
System.out.println(i+1);
}
}
}
}
分享到:
相关推荐
# 题目: # 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
# 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
这个问题要求我们模拟一个游戏,其中n个人围成一个圈,从第一个人开始按照1到m的顺序报数,每报到m的人就退出圈子,直到只剩一个人为止。我们要找出最后留在圈子里的人原来的编号。 在Python中,我们可以使用列表来...
N个人围圈数数的Java算法,比较有规律性的算法
Java数学算法:报3退出算法,具体是:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 index ;//每报一次数,下标加一 if(index == n) {//...
针对现在经典问题10个人循环报数问题编写的python实现,循环中的100次循环其实可以改为使用while实现,那个比for循环好一点。同样的可以将10个人改为任意的人数,只要不超过int限制
报数游戏,也被称作约瑟夫环问题,是一个著名的数学问题,它描述的是一种模拟的报数游戏,即一群人围成一圈,从某个人开始报数,每数到第三个数就出局,然后从下一个人继续报数,直到剩下最后一个人。这个游戏在编程...
打印出杨辉三角形 学习putpixel画点 画椭圆ellipse 利用ellipse and rectangle利用...从第一个人开始报数(从1到3报数),凡报到3的人退出 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
问题描述:有M个人围成一圈,顺序排号,从第一个人开始顺序报数(从1到N),凡报到N的退出圈子。退出者的下一个人又从1开始报数,直到圈子里只剩下最后一个人。请你编写一个程序找出最后一个留在圈子里的人原来的...
5. 有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 这道题目考察了读者的逻辑思维能力和循环操作能力。通过使用循环和if语句,读者可以模拟出圈子的过程...
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出 圈子,问最后留下的是原来第几号的那位。 【程序31】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当...
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的哪个人。 **知识点解析:** - **约瑟夫环问题**:经典的算法问题。 - **循环结构**:使用循环结构模拟报...
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **源代码解析:** ```cpp #include using namespace std; const int M = 3; void main()...
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { ...
从第一个人开始报数(从 1 到 3 报数), 凡报到 3 的人退出圈子, 问最后留下的是原来的第几号的那位? **知识点**: 约瑟夫环问题。 - **详细解析**: 这是一个经典的约瑟夫环问题。解决这类问题的一种常见方法是使用...