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来实现网络服务
Sep 15 PHP
解析php中获取系统信息的方法
Jun 25 PHP
php判断正常访问和外部访问的示例
Feb 10 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
初识ThinkPHP控制器
Apr 07 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
PHP实现随机发扑克牌
Apr 22 PHP
如何重写Laravel异常处理类详解
Dec 20 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框架的性能
2008/01/10 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
Jquery 设置标题的自动翻转
2009/10/03 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
简单的编程0基础下Python入门指引
2015/04/01 Python
python机器学习库常用汇总
2017/11/15 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python制作朋友圈九宫格图片
2019/11/03 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
英国在线药房:Express Chemist
2019/03/28 全球购物
类如何去实现接口
2013/12/19 面试题
家庭教育先进个人事迹材料
2014/01/24 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
英语课外活动总结
2014/08/27 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
校运会新闻稿
2015/07/17 职场文书
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
Python中字符串对象语法分享
2022/02/24 Python
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫