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使之能同时支持GIF和JPEG
Oct 09 PHP
php 执行系统命令的方法
Jul 07 PHP
php与paypal整合方法
Nov 28 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
php判断目录存在的简单方法
Sep 26 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
flexigrid 参数说明
2010/11/23 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
python3大文件解压和基本操作
2017/12/15 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
python标识符命名规范原理解析
2020/01/10 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
美国知名艺术画网站:Art.com
2017/02/09 全球购物
高中升旗仪式演讲稿
2014/09/09 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
公司管理制度范本
2015/08/03 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
导游词之潮音寺
2019/09/26 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
多表查询、事务、DCL
2021/04/05 MySQL
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
在python中读取和写入CSV文件详情
2022/06/28 Python