假設(shè)商品編碼如下:
Array
(
????[0]?=>?A
????[1]?=>?B
????[2]?=>?C
????[3]?=>?D
????[4]?=>?E
????[5]?=>?F
????[6]?=>?G
????[7]?=>?H
????[8]?=>?I
????[9]?=>?J
????[10]?=>?K
????[11]?=>?L
????[12]?=>?M
????[13]?=>?N
????[14]?=>?O
)
商品庫存:
Array
(
????[A]?=>?34
????[B]?=>?37
????[C]?=>?27
????[D]?=>?25
????[E]?=>?45
????[F]?=>?24
????[G]?=>?37
????[H]?=>?40
????[I]?=>?49
????[J]?=>?34
????[K]?=>?49
????[L]?=>?23
????[M]?=>?44
????[N]?=>?31
????[O]?=>?22
)
100個用戶申請發(fā)貨,至少兩件商品才可以申請發(fā)貨,發(fā)貨清單如下
Array
(
????[0]?=>?HII
????[1]?=>?ACDI
????[2]?=>?AG
????[3]?=>?AD
????[4]?=>?DG
????[5]?=>?ADDFG
????[6]?=>?BGI
????[7]?=>?DDFGI
????[8]?=>?AACEJ
????[9]?=>?ABC
????[10]?=>?ABD
????[11]?=>?AABF
????[12]?=>?BFGJ
????[13]?=>?CEGHI
????[14]?=>?AEFFF
????[15]?=>?AFGH
????[16]?=>?EH
????[17]?=>?CE
????[18]?=>?AD
????[19]?=>?FHHIJ
????[20]?=>?BDDHJ
????[21]?=>?CEFJJ
????[22]?=>?AB
????[23]?=>?CH
????[24]?=>?ACEJ
????[25]?=>?ABC
????[26]?=>?HI
????[27]?=>?AAEFIJ
????[28]?=>?ADII
????[29]?=>?BFFJ
????[30]?=>?DDHHJ
????[31]?=>?EGJJ
????[32]?=>?DG
????[33]?=>?AAABFH
????[34]?=>?BJ
????[35]?=>?CG
????[36]?=>?CI
????[37]?=>?FG
????[38]?=>?FFGGJJ
????[39]?=>?CFFH
????[40]?=>?BDFF
????[41]?=>?CDFH
????[42]?=>?DEG
????[43]?=>?ACEG
????[44]?=>?CGI
????[45]?=>?AEEI
????[46]?=>?AACFGH
????[47]?=>?FGG
????[48]?=>?ACDFHJ
????[49]?=>?ABHH
????[50]?=>?CDIIJ
????[51]?=>?BCD
????[52]?=>?AEFHHI
????[53]?=>?EEEH
????[54]?=>?AACEFH
????[55]?=>?DDEGHJ
????[56]?=>?GHJJJ
????[57]?=>?BEFJJ
????[58]?=>?DEHIJJ
????[59]?=>?ABDJ
????[60]?=>?BE
????[61]?=>?BEEGGI
????[62]?=>?AFJ
????[63]?=>?FF
????[64]?=>?AE
????[65]?=>?ABEJ
????[66]?=>?AIJJ
????[67]?=>?AE
????[68]?=>?CHJ
????[69]?=>?ACHII
????[70]?=>?AAEFGJ
????[71]?=>?FG
????[72]?=>?AEH
????[73]?=>?EF
????[74]?=>?EG
????[75]?=>?EGHI
????[76]?=>?DFG
????[77]?=>?ABDHI
????[78]?=>?BDE
????[79]?=>?EEGIJJ
????[80]?=>?AAADGG
????[81]?=>?FFF
????[82]?=>?AI
????[83]?=>?ACEFJ
????[84]?=>?AACDEF
????[85]?=>?EEGIIJ
????[86]?=>?BF
????[87]?=>?AD
????[88]?=>?BEJJ
????[89]?=>?DDEEFF
????[90]?=>?BFGII
????[91]?=>?BDDE
????[92]?=>?BCCDIJ
????[93]?=>?AACCCH
????[94]?=>?AABFG
????[95]?=>?CDHIJ
????[96]?=>?BCDEGJ
????[97]?=>?DEHJ
????[98]?=>?EFG
????[99]?=>?BEEFI
)
求已知上述商品庫存的情況下,可以發(fā)出的最大包裹數(shù)是多少
1 回答

灬紫羽
TA貢獻(xiàn)107條經(jīng)驗 獲得超71個贊
<?php #?以下純屬個人見解,算法或許不是最優(yōu),歡迎各位大佬點評 #?商品數(shù)組 $goods?=?array('A','B','C'); #?商品庫存數(shù)組 $store?=?array('A'?=>?4,?'B'?=>?3,?'C'?=>?2); $tmp?=?[];?#?記錄商品添加的次數(shù) $result?=?[];?#?表示各種組合 #?i?表示最少幾個商品組合 for?($i?=?2?;$i?<=?4?;?$i?++??){ ????$combines????=?Combination($goods,$i); ????$result?=?array_merge($result,$combines); } #?反轉(zhuǎn),鍵從小到大的商品為?最多組合的商品?到?最少商品的組合 $result?=?array_reverse($result); #?驗證庫存 foreach?($result?as?$key?=>?$item){ ????$flag?=?false;?#?表示是否刪除此項 ????$com?=?explode('---',$item); ????foreach?($com?as?$v){ ????????if(in_array($v,array_keys($tmp))){ ????????????if($tmp[$v]?>=?$store[$v])?{ ????????????????$flag?=?true; ????????????????continue; ????????????}?else?{ ????????????????$tmp[$v]?+=?1; ????????????} ????????}?else?{ ????????????$tmp[$v]?=?1; ????????} ????} ????if($flag)?unset($result[$key]); } /*從數(shù)組中拿出組合數(shù)*/ function?Combination($sort,?$num) { ????$result?=?$data?=?array(); ????if(?$num?==?1?)?{ ????????return?$sort; ????} ????foreach(?$sort?as?$k=>$v?)?{ ????????unset($sort[$k]); ????????$data???=?Combination($sort,$num-1); ????????foreach($data?as?$row)?{ ????????????$result[]?=?$v.'---'.$row; ????????} ????} ????return?$result; }
- 1 回答
- 0 關(guān)注
- 1530 瀏覽
添加回答
舉報
0/150
提交
取消