一圈同学(500)数数,数到三的同学退出,最后剩下的是哪位同学

最近刚刚学习了java的数组,所以来一道题目练习一下。

题目是:有500个同学围成一圈,从一个同学开始数数,数到3的同学退出,后面的同学重新从1开始数。请问最后是第几个同学剩下。

代码如下:

 1 //用数组实现。
 2 public class Count3Quit {
 3     public static void main(String[] args){
 4         boolean[] Person = new boolean[500];
 5         
 6         //布尔数组中的所有元素的值都赋值为true
 7         for(int i = 0; i < Person.length; i++){
 8             Person[i] = true;
 9         }
10         
11         //当数组中元素的值为true代表元素还在队伍中
12         //leftCount为剩余的元素数量
13         //index为元素的下标
14         //countNum为数的数目(1,2,3)
15         int leftCount = Person.length;
16         int countNum = 0;
17         int index = 0;
18         
19         //当剩下的数目大于1的时候,将数到3的设置为false
20         
21         while(leftCount > 1){
22             if(Person[index] == true){
23                 countNum++;
24                 
25                 if(countNum == 3){
26                     Person[index] = false;
27                     countNum = 0;
28                     leftCount--;
29                 }
30             }
31             index++;
32             
33             if(index == Person.length){
34                 index = 0;
35             }
36             
37         }
38         
39         for(int i = 0; i < Person.length; i++){
40             if(Person[i] == true)
41                 System.out.print(i + " ");
42         }
43         
44     }
45 
46 }

 最终结果如下:435 。这就是说明是第436个同学剩下。

 

 

posted @ 2012-12-22 14:05  繁星苑  阅读(650)  评论(0编辑  收藏  举报