用php计算24点游戏

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

求: 三个5,一个1组成的数学表达式的结果=24, 结果:(5-1/5)*5=24

<?php

set_time_limit(0);

$values = array(1, 5, 5, 5);

$result = 24;

$list = array();

echo "<pre>";

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;

}

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航