作者wildcupid (小渔歌)
看板C_Sharp
标题[问题] 排列组合的延伸问题
时间Tue Nov 23 23:23:05 2010
前几天所问的排列组合求解问题
再经过这几天的搜寻後有了初步的答案
找到了一个递回的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