Rumah > php教程 > php手册 > 4个数随意运算得到结果是24

4个数随意运算得到结果是24

WBOY
Lepaskan: 2016-06-13 09:38:57
asal
1070 orang telah melayarinya

算24点游戏大家都玩过吧,那么怎么用程序来计算4个数的随意运算组合得到的结果是24呢?比如,5,5,5,1这四个数,如何凑才能得到结果为24?下面介绍一个很强悍的程序,可以将符合条件的所有组合列出来。

<?php
set_time_limit(0); 
$values = array(5, 5, 5, 1); 
$result = 24;
$list = array();
echo "<pre class="brush:php;toolbar:false">"; 
makeValue($values); 
print_r($list);
function makeValue($values, $set=array()) 
{ 
	$words = array("+", "-", "*", "/"); 
	if(sizeof($values)==1) 
	{ 
		$set[] = array_shift($values); 
		return makeSpecial($set); 
	} 
	
	foreach($values as $key=>$value) 
	{ 
		$tmpValues = $values; 
		unset($tmpValues[$key]); 
		foreach($words as $word) 
		{ 
			makeValue($tmpValues, array_merge($set, array($value, $word))); 
		} 
	} 
} 
function makeSpecial($set) 
{ 
	$size = sizeof($set);
	if($size<=3 || !in_array("/", $set) && !in_array("*", $set)) 
	{ 
		return makeResult($set); 
	}
	for($len=3; $len<$size-1; $len+=2) 
	{ 
		for($start=0; $start<$size-1; $start+=2) 
		{ 
			if(!($set[$start-1]=="*" || $set[$start-1]=="/" || $set[$start+$len]=="*" || $set[$start+$len]=="/")) 
				continue; 
			$subSet = array_slice($set, $start, $len); 
			if(!in_array("+", $subSet) && !in_array("-", $subSet)) 
				continue; 
			$tmpSet = $set; 
			array_splice($tmpSet, $start, $len-1); 
			$tmpSet[$start] = "(".implode("", $subSet).")"; 
			makeSpecial($tmpSet); 
		} 
	} 
}
function makeResult($set) 
{ 
	global $result, $list; 
	$str = implode("", $set); 
	@eval("$num=$str;"); 
	if($num==$result && !in_array($str, $list)) 
	$list[] = $str; 
}
?>
Salin selepas log masuk

程序运行结果为:

Array
(
    [0] => (5-1/5)*5
    [1] => 5*(5-1/5)
)
Salin selepas log masuk
Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan