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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php 无限极分类
Mar 27 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
php实现cookie加密的方法
Mar 10 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
php精确的统计在线人数的方法
Oct 21 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
PHP源码之 ext/mysql扩展部分
2009/07/17 PHP
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
社会实践感言
2014/01/25 职场文书
给实习单位的感谢信
2014/02/01 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
《分一分》教学反思
2014/04/13 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
交通安全教育心得体会
2016/01/15 职场文书
自考生自我评价
2019/06/21 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js