我有兩個項目,A和B.每次只能有最多2個項目。這導致以下組合:使用PHP計算最大數量和拆分組的挑戰
A B
1 0
2 0
0 1
0 2
1 1
如果您想要3個或更多項目,剩餘部分會溢出到新的集合中。 2組的集合優於集合中的單個項目。實例:
- 2批次A和1個批次B(總3項)。將2臺:2 0,0 1 OR 1 1,1個0
- 3批A和4對大量的B(共7項)將是4組:2 0,1 0,0 2,0 2或1 1,1 1,1 1,0 1 ...
什麼PHP代碼將是最有效的計算:
- 組合中的每組
- 套總數
- 套 所有變化
樣品:
//input
$a = 2;
$b = 1;
$totalItems = $a + $b;
$totalSets = ceil($totalItems/2);
$maxPerSet = 2;
//split into sets of $maxPerSet
for($i = 0; $i < $totalSets; $i ++) {
//calculate combinations of $a and $b
//? code goes here...
if($a >= $maxPerSet){
$setA = $maxPerSet; $setB = 0; $a = $a - $maxPerSet;
} else if($b >= $maxPerSet){
$setB = $maxPerSet; $setA = 0; $b = $b - $maxPerSet;
} else {
if($a + $b > $maxPerSet){
$setA = $a;
$setB = $b - ($a-$maxPerSet); //not right!
$a = 0;
} else {
$setA = $a; $a = 0; $setB = $b; $b = 0;
}
}
//add to array of sets
$sets[$i] = "$setA $setB";
}
//ouput
print_r $sets;
我發現很難看到你想要完成什麼。你能澄清和/或提供樣本輸入和期望的輸出嗎? – 2010-07-09 02:17:52
也許你需要澄清你的問題 – 2010-07-22 01:09:03