JAVA编程---------37、n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位。

 1 package FushiExam;
 2 import java.util.*;
 3 public class Text_37{
 4     public static void main(String[] args) {
 5         /*有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位。
 6          * 
 7          */
 8         Scanner scan=new Scanner(System.in);
 9         int n=scan.nextInt();
10         int count=n,j=1,countnum=0;;
11         int[] arr=new int[n+1];
12         for(int i=1;i<=n;i++) {//对数组中每个数赋值为非0数1,来标记报到为3的人
13             arr[i]=1;
14         }
15         while(count>1) {//while循环,直到留有一个人为止
16             if(arr[j]!=0) {//arr[j]=0即为退出圈子的人
17                 countnum++;//用countnum来报数;1,2,3-----1,2,3------1,2,3
18             if(countnum==3) {//countnum==3即为报数为3的人,出局
19                 count--;//count为游戏剩余人数,每出局一人,count值减一
20                 arr[j]=0;
21                 countnum=0;//countnum重置为0重新开始报数1,2,3
22             }
23             }
24             j++;//寻找下一个人
25             if(j==n+1) {
26                 j=1;//当循环到最后一个人的时候,则回到开头继续重新寻找
27             }
28             
29         }
30         for(int i=1;i<=n;i++) {
31             if(arr[i]!=0)
32             System.out.print("i:"+i);
33         }
34         
35     }
36 }
原文地址:https://www.cnblogs.com/fmust/p/12532360.html