≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP 贪婪算法解决0-1背包问题入门实例

人气:681 时间:2018-09-21

这篇文章主要为大家详细介绍了PHP 贪婪算法解决0-1背包问题入门实例,具有一定的参考价值,可以用来参考一下。

对PHP贪婪算法解决0-1背包问题代码感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
贪心算法解决0-1背包问题,全局最优解通过局部最优解来获得!比动态规划解决背包问题更灵活!

/**
 * PHP贪婪算法解决0-1背包问题代码
 *
 * @param 
 * @arrange 512-笔记网: q1010.com
 **/
//0-1背包贪心算法问题
class tanxin{
 public $weight;
 public $price;
 public function __construct($weight=0,$price=0)
 {
  $this->weight=$weight;
  $this->price=$price;
 }
}
//生成数据
$n=10;
for($i=1;$i<=$n;$i++){
 $weight=rand(1,20);
 $price=rand(1,10);
 $x[$i]=new tanxin($weight,$price);
}
//输出结果
function display($x)
{
 $len=count($x);
 foreach($x as $val){
  echo $val->weight,'  ',$val->price;
  echo '<br>';
 }
}
//按照价格和重量比排序
function tsort(&$x)
{
 $len=count($x);
 for($i=1;$i<=$len;$i++)
 {
  for($j=1;$j<=$len-$i;$j++)
  { 
   $temp=$x[$j];
   $res=$x[$j+1]->price/$x[$j+1]->weight;
   $temres=$temp->price/$temp->weight;
   if($res>$temres){
	$x[$j]=$x[$j+1];
	$x[$j+1]=$temp;
   }
  }
 } 
}
//贪心算法
function tanxin($x,$totalweight=50)
{
 $len=count($x);
 $allprice=0;
 for($i=1;$i<=$len;$i++){
  if($x[$i]->weight>$totalweight) break;
  else{
   $allprice+=$x[$i]->price;
   $totalweight=$totalweight-$x[$i]->weight;
  }
 }
 if($i<$len) $allprice+=$x[$i]->price*($totalweight/$x[$i]->weight);
 return $allprice;
}
tsort($x);//按非递增次序排序
display($x);//显示
echo '0-1背包最优解为:';
echo tanxin($x);
/***   来自四海网(www.q1010.com)   ***/

本文来自:http://www.q1010.com/173/823-0.html

注:关于PHP 贪婪算法解决0-1背包问题入门实例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:贪婪算法

您可能感兴趣的文章

上一篇:php 通过专有类库PHP QR Code生成二维码的简单示例
下一篇:php 获取表单单选框radiobutton数据的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。