• 国王要杀100个和尚中的99个(约瑟夫环)


    约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

    采用PHP实现约瑟夫环:

     1 $n = 100;
     2 $m = 5;
     3 $k = 1;
     4 function lastOne($n, $m, $k){
     5     if($k > $n){
     6         $k = $k % $n;
     7     }
     8     for($i = 1; $i <= $n; $i++){
     9         $monk[$i] = $i;
    10     }
    11     $kill_num = 0;
    12     do{
    13         foreach($monk as $num => $v){
    14             if(isset($k) && $k != $num){
    15                 continue;
    16             } else {
    17                 unset($k);
    18             }
    19             $kill_num++;
    20             if($kill_num % $m == 0 && count($monk) > 1){
    21                 unset($monk[$num]);
    22                 $kill_num = 0;
    23             }
    24         }
    25     }while(count($monk) > 1);
    26     reset($monk);
    27     return current($monk);
    28 }
    29 echo "<pre>";
    30 print_r(lastOne($n, $m, $k));
    31 echo "</pre>";
  • 相关阅读:
    day4
    day3
    day2
    day1
    spring-boot-note
    spring-boot-cli
    jquery ajax rest invoke
    spring-boot
    docker mysql
    jpa OneToMany
  • 原文地址:https://www.cnblogs.com/uniqid/p/4150863.html
Copyright © 2020-2023  润新知