zoukankan      html  css  js  c++  java
  • 算24点

    <?php
    
    set_time_limit(0);
    $values = array(4, 4, 4, 1);
    $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;
    }
    
    ?>

    来自:http://blog.csdn.net/phpfenghuo/article/details/23137749

  • 相关阅读:
    【书上讲解】平面上最近点对问题
    【书上讲解】快速排序
    【书上讲解】归并排序的非递归写法
    【例题 2-6】汉诺塔问题
    汉诺塔问题详解
    【例题2-5】整数的划分
    【例题2-4】排列问题
    【1-5】最大间隙问题
    【1-4】金币阵列问题
    【1-2】字典序问题
  • 原文地址:https://www.cnblogs.com/wobeinianqing/p/7159315.html
Copyright © 2011-2022 走看看