<?
function ReturnResult(a,b,sign)
{
    switch($sign)
      case "+":
        $value = $a+$b;
        break;
      case "-":
        $value = $a-$b;
        break;
      ----------------
      ----------------
retrun $value;
}
?>

解决方案 »

  1.   

    本题中似乎要有3的5次方的可能性,要全罗列的话,似乎就没有意义了!
    我的意图是用变量来做为运算符,如:
    $plus="+";
    然后实现有 3 $plus 4=7的效果!
    不知道能否实现!
      

  2.   

    帮小弟看看我的代码哪里有问题?
    <?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];
    ?>
      

  3.   

    switch($v[$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");
            }
      
    ?>
      

  4.   

    谢谢 xuzuning(唠叨)大哥,好简单的实现方法,请问能否介绍一下eval的用法,或提供一个详细介绍此函数的网址啊,不胜感激!
     另外,$expr = '(34{$p[$i1]}5{$p[$i2]}6{$p[$i3]}8{$p[$i4]}9){$p[$i5]}2';
    中的 $p数组为什么要用{}括上呢? 
      

  5.   

    不太懂,eval怎么用啊
    发现我太笨了
      

  6.   

    To xuzhuning和各位对eval了解的朋友们:
              $t = eval("return \"$expr\";");
     此句换成:
              $t = eval("\$expr= \"$expr\";");为什么会出错呢          echo $t." : ".eval("return ($t).'<br>';");
                此句中的($t)是什么作用呢?我在手册里怎么找不到相关的说明?:(