Heim > php教程 > PHP源码 > php实现贪心算法0-1背包问题

php实现贪心算法0-1背包问题

PHP中文网
Freigeben: 2016-05-25 17:07:19
Original
2591 Leute haben es durchsucht

1. [代码]希望高手用其它算法来实现0-1背包    

//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,&#39;  &#39;,$val->price;
		echo &#39;<br>&#39;;
	}
}
//按照价格和重量比排序
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 &#39;0-1背包最优解为:&#39;;
echo tanxin($x);
Nach dem Login kopieren

                   

                   

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage