Algorithm 置换算法的形式为
因此,我们想举个例子:Algorithm 置换算法的形式为,algorithm,permutation,Algorithm,Permutation,因此,我们想举个例子: R= repeats allowed -> 2 A= alphabet (1-10) S= space = 4; 但是需要一个奇特的数学公式来计算这个和所有的组合吗?可能的解决方案相对较少(2,1,1,4,4也无效,因为如果有任何意义,会有多个重复!重复必须是连续的吗?如果R=2,是否允许5,1,4,1?@Pete:不,它们可以在任何地方,所以5,1,4,1是可以的;)标题写的是排列,但正文写的是组合。这是哪一个?ja也考虑过使用蛮力方法,但想要一个更“聪明”的解
R= repeats allowed -> 2
A= alphabet (1-10)
S= space = 4;
但是需要一个奇特的数学公式来计算这个和所有的组合吗?可能的解决方案相对较少(<10000),因此可以生成^4中的所有单词,然后删除重复次数超过2次的单词 或
- 生成N个不同单词的(有序)组合
- 生成该子集的排列,以获得所有不重复的可能性
- 对N-1个单词也这样做
- 对于这些单词中的每个元素,在除所述字符位置之外的所有位置添加一个副本
据我所知,你的字母表是1。。10,每个“字母”可能出现两次。所以你真正拥有的是一个字母表
[1][1][4][5]
[1][7][4][5]
[5][1][4][5]
它的长度是20,而不是10
问题现在变成了20个排列4
希望这有帮助
编辑:
根据您对问题的补充意见,您可以检查每个生成的排列是否为XXYY形式,因为根据您所写的内容,这将是无效的。总数为N*[(S选择1)*((N-1)排列(S-1)) +(S选择2)*((N-1)排列(S-2)) + ... +(S选择R)*((N-1)排列(S-R))]
- 换句话说,可能最好修复1
重复项的位置(
不同的操作方法 这)并排列剩余的S 选择1
N-1
剩余空间上的项目;(与正常的S-1
)N排列相同
- 然后将两个相同的项目固定在
放置(
S选择2种不同的放置方式 执行此操作)并排列剩余的
剩余N-1
空格上的项目S-2
- 对于从1到R的每种可能的重复项目数,etc
- 然后有N个选择 您可能重复的项目
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10
一个正确的一般答案需要一个总和。我将向您展示如何对这些特定值执行此操作,并让您概括它 有两种情况:
- 不包含重复项的排列。这只是
10p4
- 仅包含一个副本的置换:
- 选择重复的号码:
10c1
- 为它选择两个位置:
4c2
- 选择适合剩余两个位置的数字:
9p2
- 选择重复的号码:
因此,这个特殊情况的答案是9360。我假设只有一个项目可以重复,而这个项目不是预先确定的 以下公式适用于a(字母表大小)、S(字符串大小)和R(最大重复次数): f(A,S,R)=(A perm S)+ASum[R=2到R]((S选择R)(A-1 perm S-R)) 例如,对于R=1(简单置换),我们得到f(A,S,R)=(A置换)。对于A=S=R=2,我们有f(A,S,R)=4,对应于: 1,2 2,1 1,1 2,2 你在问题中描述的情况是A=10,R=2,S=4,然后我们有: f(A,S,R)=9360
(与BlueRaja计算的完全相同)是一篇关于组合和排列的好文章,在那里你可以找到所有公式什么是“允许重复”的意思?基本上,对于每个排列,如1,1,4,5(1),按照R变量重复两次。任何(一)项都可以重复R次。因此,1,1,1,4无效R>2,1,1,4,4也无效,因为如果有任何意义,会有多个重复!重复必须是连续的吗?如果R=2,是否允许5,1,4,1?@Pete:不,它们可以在任何地方,所以5,1,4,1是可以的;)标题写的是排列,但正文写的是组合。这是哪一个?ja也考虑过使用蛮力方法,但想要一个更“聪明”的解决方案,例如,如果S(Space)=200,那么它就变成了imense,但仍然应该比我们允许所有重复“生成N个不同单词的(有序)组合”的情况小很多?命令?对不起,你能再解释一下或者举个例子吗?我是哑巴:(有序意味着单词被排序(w1
(N permute S)
+ N * [ (S choose 2) * ((N-1) permute (S-2))
+ (S choose 3) * ((N-1) permute (S-3))
+ ...
+ (S choose R) * ((N-1) permute (S-R)) ]