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编写大型网站问题集
Mar 06 PHP
利用PHP制作简单的内容采集器的原理分析
Oct 01 PHP
PHP 危险函数解释 分析
Apr 22 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
PHP中的替代语法介绍
Jan 09 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
PHP读取PPT文件的方法
Dec 10 PHP
降低PHP Redis内存占用
Mar 23 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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
短波的认识
2021/03/01 无线电
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
Python中的自省(反射)详解
2015/06/02 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python属性和内建属性实例解析
2020/01/14 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
python实现学生管理系统开发
2020/07/24 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
技术总监个人的自我评价范文
2013/12/18 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
化妆品促销方案
2014/02/24 职场文书
工作所在部门证明
2014/09/21 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
学习雷锋主题班会
2015/08/14 职场文书
公司转让协议书
2016/03/19 职场文书
python接口测试返回数据为字典取值方式
2022/02/12 Python