Kutularının x vardır demek, her kutu her harf envanter 1 veya daha fazla olması ile harflerin AZ bir "envanter" içerir.
Şimdi aşağıdaki gerektiğini söylüyorlar:
- 6 gibi
- 2 Kahvaltılar
- 1 C
Nasıl bana ihtiyacım harflerle sağlayabilir kutularının tüm olası kombinasyon / permutation bir listesini nasıl alabilirim?
Algoritması aynı zamanda benim gereksinimlerini karşılamak için kutuları kombinasyonunu üretmek gerekiyor. Örneğin: Kutu-1 sadece 4 Farklı vardır ve Kutu-2 1 A vardır ve Kutu-3 1 A var, ben 6 gibi 3 kutuları arasında yerine getirilebilir belirtmek için algoritmanın sonucu gerektiğini söylüyorlar.
Böyle bir problemin çözümü için temel mantık budur. Bunun için içine bakarak gereken herhangi bir özel algoritmalar var mı?
EDIT 1:
DCP öneri Per, burada benim girişimi PHP uygulama olduğunu bulunuyor:
$boxes = array(
// box 1
array(
'A' => 6,
'B' => 4,
'C' => 10
),
// box 2
array(
'A' => 8,
'B' => 4,
'C' => 2
),
// box 3
array(
'A' => 1,
'B' => 1,
'C' => 0
)
);
$n = count($boxes);
for ($mask = 0; $mask <= (1 << $n) - 1; $mask++)
{
$tots = array();
for ($i = 0; $i < $n; $i++)
{
if (((1 << $i) & $mask) != 0)
{
// this is a selected box for this mask, add the A's, B's etc. for this box to the total
$tots[0] += $boxes[$i]['A'];
$tots[1] += $boxes[$i]['B'];
$tots[2] += $boxes[$i]['C'];
}
// check the tots array to see if it meets the letter requirements. If it does,
// then this is a valid combination of boxes.
}
}