标签:index JAVA ++ 37 number int isIn 报数
题目:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。
import java.util.Scanner;
public class WangDao {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Input the n: ");
int n = scan.nextInt();
boolean[] isIn = new boolean[n]; // 用布尔型数组来标记是否在圈内。
for (int i = 0; i < isIn.length; i++) {
isIn[i] = true;
}
int inCircle = n, index = 0, number = 0; // 圈内人数,指标,报数。
while (inCircle > 1) { // 圈内人数剩下1人时退出。
if (isIn[index]) {
number++;
if (number == 3) { // 报数到3时。
number = 0; // 重新报数。
isIn[index] = false; // 标记退圈。
inCircle--; // 圈内人数扣1个。
}
}
index++; // 指标每轮加1. 不可写成isIn[index++],因为if内也要用到index,不能提前更变。
if (index == n) { // 如果数到最后一号,重头再遍历。
index = 0;
}
}
for (int i = 0; i < isIn.length; i++) {
if (isIn[i]) { // 遍历到未标记退圈的号数加1,就是活着的人。
System.out.println("Last one is " + (i + 1));
}
}
}
}
标签:index,JAVA,++,37,number,int,isIn,报数 来源: https://blog.csdn.net/YelloJesse/article/details/89431309
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。