假设我有3个绿色球,2个橙色球和8个黄色球。我想对它们进行排序,如何生成所有可能的序列,假设相同颜色的球是相同的。
在R中,使用gregmisc
,我可以这样做
balls<-c('orange','orange', 'green', 'green','green','yellow'...'yellow')
然后只需执行
g <- permutations(length(balls),length(balls),v=balls,set=F)
g.reduced <- g[!duplicated(g),]
但那似乎非常不必要。
g <- unique(permutations(length(v),length(v),v,F))
。一行代码即可。 - jclancym + 1 + n - 1
的向量,其中n是之前不唯一的元素数量,m是其他元素的数量。从末尾开始的第m + 1个元素开始,将第一个元素放在原始行中,并遍历所有可能的情况。 - jclancyn - 1
个其他元素之间填充。这个想法是排列矩阵给出了一个顺序,你用重复的n - 1
个元素填充可能的空白。我会尝试编写代码或伪代码,并将其放在答案中。 - jclancy