PHP解决约瑟夫环问题
PHP解决约瑟夫环问题
一、总结
二、PHP解决约瑟夫环问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。
1 //PHP解决约瑟夫环问题 2 //方法一 3 function joseph_ring($n,$m){ 4 $arr = range(1,$n); 5 $i = 0; 6 while(count($arr)>1){ 7 $i=$i+1; 8 $head = array_shift($arr); 9 if($i%$m != 0){ //如果不是则重新压入数组 10 array_push($arr,$head); 11 } 12 } 13 return $arr[0]; 14 } 15 //方法二 16 function joseph_ring2($n,$m){ 17 $r = 0; 18 for($i=2;$i<=$n;$i++){ 19 $r = ($r+$m)%$i; 20 } 21 return $r + 1; 22 } 23 echo "<br/>".joseph_ring(60,5)."<br/>"; 24 echo "<br/>".joseph_ring2(60,5)."<br/>";
方法一直接模拟
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2025-01-31:宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672