龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php算法

时间:2014-07-22 14:50来源: 作者: 点击:
分享到:
编号1-n的人围成一圈,开始报数m,则第m号人出列,然后从m+1号人开始报数 不断循环报数 直至所以人出列的算法
编号1-n的人围成一圈,开始报数m,则第m号人出列,然后从m+1号人开始报数 不断循环报数 直至所以人出列的算法
function rand_number($num)
	{
		return rand(0,$num);
	}
	
	function outnumber($n,&$arr,$max)
	{
		$number=rand_number($max);
		if($number>$n) $number=$number%$n+1;
		
		while(!empty($arr)){
		
			if(!isset($i)) {unset($arr[$number]);var_dump($arr);}//删除元素
			
			$i=$number;//需要索引才能找到下一个间距为新$number的元素
			
			$number=rand_number($max);//生成下一个随机数
			if($number>$n) $number=$number%$n+1;
			
			echo '下一个间距'.$number.'元素'.'<br>';
			
			$count=0;
			$n=end($arr);
			while($count<$number){
				
				if($i>=$n) $i=1;//最后一个元素则返回到第一个元素
				else $i++;
				
				if(!isset($arr[$i])) {continue;}
					else {$count++;}//找到一个元素才++
			}
			unset($arr[$i]);
			var_dump($arr);
		}
	}
	
	$max=100;
	$n=6;
	for($i=1;$i<=$n;$i++) $arr[$i]=$i;
	outnumber($n,$arr,$max);
精彩图集

赞助商链接