PHP实现的回溯算法示例


Posted in PHP onAugust 15, 2017

本文实例讲述了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 session和cookie使用说明
Apr 07 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
php中二分法查找算法实例分析
Sep 22 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
php简单中奖算法(实例)
Aug 15 #PHP
PHP实现的随机红包算法示例
Aug 14 #PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 #PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 #PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 #PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 #PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 #PHP
You might like
php显示指定目录下子目录的方法
2015/03/20 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
php的socket编程详解
2016/11/20 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
Promise扫盲贴
2019/06/24 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python清除函数占用的内存方法
2018/06/25 Python
解析python的局部变量和全局变量
2019/08/15 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
请介绍一下WSDL的文档结构
2013/03/17 面试题
工艺工程师工作职责
2013/11/23 职场文书
机械专业应届生求职信
2013/12/12 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
电气工程自动化求职信
2014/03/14 职场文书
业务员岗位职责
2015/02/03 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
离婚案件被告代理词
2015/05/23 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL
V Rising 服务器搭建图文教程
2022/06/16 Servers