前幾天所問的排列組合求解問題
再經過這幾天的搜尋後有了初步的答案
找到了一個遞迴的function
int elementLevel = -1;
public void CalcPermutation(int k)
{
elementLevel++;
permutationValue.SetValue(elementLevel, k);
if (elementLevel == numberOfJobs * numberOfMachines)
{
CheckIfUnique(permutationValue);
}
else
{
for (int i = 0; i < numberOfJobs * numberOfMachines; i++)
{
if (permutationValue[i] == 0)
{
CalcPermutation(i);
}
}
}
elementLevel--;
permutationValue.SetValue(0, k);
}
當我呼叫這個function的時候
CalcPermutation(0)
參數丟0進去就會把所有組合都弄出來
由於還是很嫩的新手所以對這個function還是有點不懂
那這是針對一條sequence的排列組合
那如果我想延伸至多條的該在哪邊加for迴圈呢?
求解一條的就像
123 → 123、132、213、231、312、321
但想變多條就如
123 123 123
123 → 123 、123 、...以此類推
123 123 132
這看起來好像只需要在原本的code某個地方加個迴圈就可以解決
但是又好像不行
而且我想了很久還是想不到要加在哪裡...
感謝幫忙囉!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.73