一般的全排列是求n个数的全排列,而我要求的排列是n组数的全排列,每组数的元素个数都不同,即分别为x1,x2...xn个,但是每组的值都是相同的,即求这x1+x2+...xn个数的全排列,比如:
2个2和3个3的全排列为:
2 2 3 3 3
2 3 3 3 2
2 3 3 2 3
3 2 2 3 3
3 3 2 2 3
3 3 3 2 2
这叫做可重复排列
一种思路:
这个全排列中有n个不同的数,同时这个全排列的位数为
。为了简化,象楼主的例子一样,每组的值同个数相等,即 xi组值为xi,同时
按从小到大,即xi<xj(i<j)。
推出假想结论:全排列数=n^xn×(n-1)^xn-1×。。。×1^x1
希望大家验证。
这里有个会生成可重复排列的算法:
http://expert.csdn.net/expert/topic/843/843002.xml