<?
function ReturnResult(a,b,sign)
{
switch($sign)
case "+":
$value = $a+$b;
break;
case "-":
$value = $a-$b;
break;
----------------
----------------
retrun $value;
}
?>
function ReturnResult(a,b,sign)
{
switch($sign)
case "+":
$value = $a+$b;
break;
case "-":
$value = $a-$b;
break;
----------------
----------------
retrun $value;
}
?>
我的意图是用变量来做为运算符,如:
$plus="+";
然后实现有 3 $plus 4=7的效果!
不知道能否实现!
<?php
###############################################################
# #
# (34[a]5[b]6[c]8[d]9)[]2=2008 #
# #
# #
###############################################################
$do=array("+","-","X");
$num=array("34","5","6","8","9");
$arr_DO=array();
for ($i=0;$i<3;$i++) //枚举[a][b][c][d]处可能出现的运算符的排列
for ($p=0;$p<3;$p++)
for ($m=0;$m<3;$m++)
for ($n=0;$n<3;$n++)
$arr_DO[]="$do[$i],$do[$p],$do[$m],$do[$n]";
print_r($arr_DO);function solute($v){
global $num,$arr_DO;
$v=explode(",",$v);
for ($i=0;$i<count($v);$i++)
{ switch($v[$i])
case "X" : $num[$i+1]=int($num[$i]) * int($num[$i+1]); break;
case "+" : $num[$i+1]=int($num[$i]) + int($num[$i+1]); break;
case "- ": $num[$i+1]=int($num[$i]) - int($num[$i+1]); break;
}return $num[4]; //返回运算结果
}
//echo solute($arr_DO[0]);
for ($i=0;$i<count($arr_DO);$i++)
if (solute($arr_DO[$i])==2006||solute($arr_DO[$i])==2010||solute($arr_DO[$i])==1004)
echo $arr_DO[$i];
?>
....
}int() ==> intval()你的题目无解!算法也过于复杂,用eval函数有多好!
<?
$expr = '(34[]5[]6[]8[]9)[]2=2008';
//改写为
$expr = '(34{$p[$i1]}5{$p[$i2]}6{$p[$i3]}8{$p[$i4]}9){$p[$i5]}2';
$p = array('+','-','*');
for($i1=0;$i1<3;$i1++)
for($i2=0;$i2<3;$i2++)
for($i3=0;$i3<3;$i3++)
for($i4=0;$i4<3;$i4++)
for($i5=0;$i5<3;$i5++) {
$t = eval("return \"$expr\";");
echo $t." : ".eval("return ($t).'<br>';");
if(eval("return $t;") == 2008)
exit("解为:$t");
}
?>
另外,$expr = '(34{$p[$i1]}5{$p[$i2]}6{$p[$i3]}8{$p[$i4]}9){$p[$i5]}2';
中的 $p数组为什么要用{}括上呢?
发现我太笨了
$t = eval("return \"$expr\";");
此句换成:
$t = eval("\$expr= \"$expr\";");为什么会出错呢 echo $t." : ".eval("return ($t).'<br>';");
此句中的($t)是什么作用呢?我在手册里怎么找不到相关的说明?:(