PHP实现的回溯算法示例

 更新时间:2017年08月15日 09:02:12   作者:CleverCode  
这篇文章主要介绍了PHP实现的回溯算法,结合具体实例形式分析了php回溯算法的实现步骤与使用方法,涉及字符串与数组的递归、遍历、运算等相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP实现的回溯算法。分享给大家供大家参考,具体如下:

问题:

 一头大牛驼2袋大米,一头中牛驼一袋大米,两头小牛驼一袋大米,请问100袋大米需要多少头大牛,多少头中牛,多少头小牛?

实现代码:

<?php
/*
 * k = 2x + y + 1/2z
 取值范围
 * 0 <= x <= 1/2k
 * 0 <= y <= k
 * 0 <= z < = 2k
 * x,y,z最大值 2k
 */
$daMi = 100;
$result = array();
function isOk($t,$daMi,$result)
{/*{{{*/
 $total = 0;
 $hash = array();
 $hash[1] = 2;
 $hash[2] = 1;
 $hash[3] = 0.5;
 for($i=1;$i<=$t;$i++)
 {
 $total += $result[$i] * $hash[$i];
 }
 if( $total <= $daMi)
 {
 return true;
 }
 return false;
}/*}}}*/
function backtrack($t,$daMi,$result)
{/*{{{*/
 //递归出口
 if($t > 3)
 {
 //输出最优解
 if($daMi == (2 * $result[1] + $result[2] + 0.5 * $result[3]))
 {
  echo "最优解,大米:${daMi},大牛:$result[1],中牛: $result[2],小牛:$result[3]\n";
 }
 return;
 }
 for($i = 0;$i <= 2 * $daMi;$i++)
 {
 $result[$t] = $i;
 //剪枝
 if(isOk($t,$daMi,$result))
 {
  backtrack($t+1,$daMi,$result);
 }
 $result[$t] = 0;
 }
}/*}}}*/
backtrack(1,$daMi,$result);
?>

运行结果如下图:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP7新特性之抽象语法树(AST)带来的变化详解

    PHP7新特性之抽象语法树(AST)带来的变化详解

    这篇文章主要介绍了PHP7新特性之抽象语法树(AST)带来的变化,结合实例形式分析了PHP7抽象语法树的相关概念、功能、特性、使用方法及相关注意事项,需要的朋友可以参考下
    2018-07-07
  • 了解Joomla 这款来自国外的php网站管理系统

    了解Joomla 这款来自国外的php网站管理系统

    joomla在国外很热,就连台湾都有不少站使用joomla,国内就对joomla缺乏了解。大多都使用dedecms或者phpcms等。在这四个月来一直在学习joomla,觉得用它来建站很方便。
    2010-03-03
  • php图片的二进制转换实现方法

    php图片的二进制转换实现方法

    这篇文章主要介绍了php图片的二进制转换实现方法,详细介绍了图片与二进制之间转换的原理与实现技巧,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • 深入掌握include_once与require_once的区别

    深入掌握include_once与require_once的区别

    要深入掌握include(_once)与require(_once),需要掌握以下几点内容,不过有人建议不建议使用
    2013-06-06
  • PHP中使用grpc服务的教程详解

    PHP中使用grpc服务的教程详解

    这篇文章主要为大家详细介绍了PHP中使用grpc服务的教程相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • php实现的操作excel类详解

    php实现的操作excel类详解

    这篇文章主要介绍了php实现的操作excel类,较为详细的分析说明了PHP操作excel的具体技巧,包括PHP针对excel的创建、打开、读取、修改等,需要的朋友可以参考下
    2016-01-01
  • 如何使用PHP7的Yaconf

    如何使用PHP7的Yaconf

    Yaconf是一个高性能的PHP配置容器, 它在PHP启动的时候把格式为INI的配置文件Parse后存储在PHP的常驻内存中,不需要每次请求的时候都来分析配置文件,并且在获取配置项的时候"zero-copy"。
    2021-05-05
  • javascript some()函数用法详解

    javascript some()函数用法详解

    文章主要详细介绍了some函数的用法,非常的实用,有需要的小伙伴们可以参考下。
    2014-11-11
  • 给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug

    给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug

    给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug...
    2007-04-04
  • 非常实用的PHP常用函数汇总

    非常实用的PHP常用函数汇总

    这篇文章主要介绍了非常实用的PHP常用函数,汇总了加密解密、字符串操作、文件操作、SQL注入等函数的实例与用法说明,在PHP项目开发中非常具有实用价值,需要的朋友可以参考下
    2014-12-12

最新评论