貪婪問題2

2021-09-03 10:58:31 字數 2030 閱讀 1034

13:有一艘大船準備用來裝載貨物。所有待裝貨物都裝在貨箱中且所有貨箱的大小都一樣,

但貨箱的重量都各不相同。設第i 個貨箱的重量為wi(1≤i≤n),

而貨船的最大載重量為c,如何在貨船上裝入最多的貨物。

<?php  

/* *13:有一艘大船準備用來裝載貨物。所有待裝貨物都裝在貨箱中且所有貨箱的大小都一樣,

但貨箱的重量都各不相同。設第i 個貨箱的重量為wi(1≤i≤n),

而貨船的最大載重量為c,如何在貨船上裝入最多的貨物。

*系統環境:windows/linux

*編譯環境:php4/php5

*輸入引數:存放在in.txt,多個引數時空格分隔

引數1是一組數字,表示一組物品的重量 中間用分號分割;

重量,單位為千克,不能有0

引數3是乙個數字,表示最大重量,單位為千克,

例如格式:8,2,11,3,7 13

輸出:out.txt

*/$params=getparams(2);  

$argv0=trim(trim($params[0]),",");  

$argv1=trim($params[1]);  

//檢查引數1

if(!preg_match_all("/^(\d+,?)+$/i", $argv0,$matches))  

//檢查引數2

if(!is_numeric($argv1))  

$weights=split(",",trim($argv0, ","));  

$max_weight=$argv1;  

foreach($weights

as$weight)  

$ar = array ($weights,array_keys($weights));  

//按照重量從小到大排序

array_multisort($ar[0],sort_numeric, sort_asc,$ar[1]);  

$weights_order=$ar[0];  

$index_order=$ar[1];  

$now_weight=0;  

$i=0;  

$total=count($weights_order);  

$find=array();  

while(1)  

else

if($now_weight==$max_weight)  

}else  

}  }  

//清空out.txt

output("",true);  

if(count($find)==0)  

//輸出結果

output("weight:$now_weight;");  

foreach($find

as$index => $num)  

error_msg("execute success");  

/* 從in.txt裡讀取引數

*/function getparams($paramnum)  

$in=preg_replace("/(\s+)/i", " ", $in);  

//多個引數時,按照空格分隔

$parms=split(" ",trim($in));  

if($parms===false)  

if(count($parms) < $paramnum)  

return

$parms;  

}  /*

把結果輸出到輸出檔案裡

當isclean=true時清空out.txt

*/function output($msg,$isclean=false)  

error_log($msg."\n", 3, "out.txt");  

}  /*

輸入錯誤資訊

如果$is_exit表示輸入資訊後退出

*/function error_msg($msg,$is_exit=true)  

?> 

貪婪演算法 裝箱問題

貪婪演算法求出的最終解不一定是最優解 儲存形式 鍊錶 型別宣告 1.排序物品體積時物品的型別 typedef struct elemg 2.裝箱時物品的型別typedef struct nodegoodslink 3.箱子節點typedef struct boxebox elemg init goo...

貪婪演算法 集合覆蓋問題

我們生活往往會遇到很多類似於 書包裡東西要怎樣放才能裝下盡可能多的東西。具體來說 比如我有乙個可以裝35磅的袋子,有一台重15磅價值1500美元的結他 一台重20磅價值1000美元的電腦 台重30磅價值3000美元的音響。應該怎麼怎麼裝裝下價值最大的東西?貪婪策略的思想是 1 先裝價值最大的物品 2...

貪婪和非貪婪

python裡數量詞預設是貪婪的 在少數語言裡也可能是預設非貪婪 總是嘗試匹配盡可能多的字元 非貪婪則相反,總是嘗試匹配盡可能少的字元。在 後面加上?使貪婪變成非貪婪。s this is a number 234 235 22 423 r re.match d d d d s r.group 1 4...