编号1-10的人坐在一起围成一个圈 可以数数从1开始数 数3出列 下个人继续开始从1开始数

[java]
  1. /**   
  2.  * Title: 编号1-10的人坐在一起围成一个圈 可以数数从1开始数  数3出列 下个人继续开始从1开始数   
  3.  * Description: 打印最后一名出列是几号 
  4.  * @author LBS   
  5.  * @date 2012-07-26   
  6.  */  
  7. import java.util.List;  
  8. import java.util.ArrayList;  
  9. public class lzwCode{  
  10.   
  11. public static void main(String [] args) {  
  12.     List<Integer> list = new ArrayList<Integer>();  
  13.     for (int i=1; i<=10; i++) {  
  14.         list.add(i);  
  15.     }  
  16.     int m = 0;  
  17.     while(list.size() > 1) {  
  18.         for (int j=0; j<list.size(); j++) {  
  19.             m++;  
  20.             if (m%3 == 0) {  
  21.                 System.out.println(list.remove(j));  
  22.                 j–;  
  23.                 m = 0;  
  24.             }  
  25.         }  
  26.     }  
  27.     System.out.println(“最后一个人的号码是: ” + list.get(0));    
  28. }  
  29. }  

控制台运行结果:

PHP 实现该功能:

[php]<?php  
  1. /** 
  2.  * 构思 1 2 3 4 5 
  3.  *        2 3 4 5 1 
  4.  *          3 4 5 1 2  
  5.  *            4 5 1 2 
  6.  *              5 1 2 4 
  7.  *                1 2 4 5 
  8.  *                  2 4 5 
  9.  *                    2 4 
  10.  */  
  11. function numPer($m ,$n) {  
  12.     //构造数组   
  13.     for($i=1 ;$i<=$m ;$i++){  
  14.        $array[] = $i;  
  15.     }  
  16.     $flag = 0 ;    //设置数组标记   
  17.     while(count($array)>1) {  
  18.        if(($flag+1)%$n == 0) {  
  19.            echo $array[$flag].”<br>”;  
  20.            unset($array[$flag]);//数到3到的人去掉   
  21.        } else {  
  22.            array_push($array ,$array[$flag]); //没有数到3的人移到末尾   
  23.            unset($array[$flag]);//此时这个人已经移到末尾,必须移除   
  24.        }  
  25.        $flag++;  
  26.     }  
  27.     return $array[$flag];  
  28. }  
  29. echo numPer(10,3);  
  30. ?>  

结果如下:

 

You may also like...

发表评论