20个字母分到两个容器里面,有多少种组合怎么算?
发布网友
发布时间:2023-07-12 16:38
我来回答
共5个回答
热心网友
时间:2024-11-15 03:52
我来告诉你4个的怎么算,20的就能类推了。
首先你两个盒子不区分,且至少放1个字母
这样可能有A盒子1个,B盒子仨
或A盒子2个,B盒子也两个。
其实就是4÷2=2
如果是5的话 5÷2=2.5取整为2
即A1 B4 和A2 B3两种(A B不区分)
然后做计算
4个字母的情况,A盒子1个,B盒子仨,就是“C41”(不懂你有没学A 和C,C41就代表在4个元素里不分顺序地随便取1个,计算公式是Cab=(a×(a-1)×…×(a-b+1)÷(b!)),C41=4
然后是A盒子2个,B盒子也两个,就是C42=6,因为AB不分,所以再除以2,是3。同理,当AB两盒子字母数一样时,这就计算就重复算了一遍,所以要除2
4+3=7
所以4个字母就是7了。
20字母的话,就是C20 1+C20 2+…+(C20 10÷2)=20+190+…… 后面我不算了呵。。
热心网友
时间:2024-11-15 03:52
2^(n-1)-1种,以下是vbscript代码,可以直接保存为vbs文件运行,Combination函数使用递归法计算组合,可能效率不是很好,str="ABCD"这句改了就可以计算更多组合
if instr(wscript.fullname,"WScript") then
WScript.CreateObject("WScript.Shell").run("cscript """&wscript.scriptfullname&"""")
else
wscript.echo "方案 第一个容器 第二个容器"
set regex=new regexp
str="ABCD"
e=cint(len(str)\2)
s=0
RegEx.Global = True
for d=1 to e
cmb=Combination(str,d)
g=ubound(cmb)
if d=e and (len(str) mod 2=0) then g=g\2
for f=0 to g
s=s+1
RegEx.Pattern="["&cmb(f)&"]"
wscript.echo s&" "&cmb(f)&" "RegEx.replace(str,"")
next
next
wscript.echo s
wscript.stdin.readline
end if
Function Combination(str, num)
If num < 0 Or num > Len(str) Then num = Len(str)
If num <= 1 Then
Combination = ToCharArray(str)
Else
Dim tmparr()
carr = ToCharArray(str)
For i = 0 To UBound(carr) - num + 1
lstarr = Combination(Mid(str, i + 2), num - 1)
On Error Resume Next
Count = UBound(tmparr) + 1
On Error GoTo 0
ReDim Preserve tmparr(Count + UBound(lstarr))
For j = 0 To UBound(lstarr)
If lstarr(j) <> "" Then tmparr(Count + j) = carr(i) & lstarr(j)
Next
Next
Combination = tmparr
End If
End Function
Function ToCharArray(str)
count = Len(str) - 1
If count = -1 Then
ToCharArray = Array("")
Else
Dim tarr()
ReDim tarr(count)
For i = 0 To count
tarr(i) = Mid(str, i + 1, 1)
Next
ToCharArray = tarr
End If
End Function
热心网友
时间:2024-11-15 03:53
方法数量=2^(字母数量-1)-1
例如20个字母
方法数量=2^(20-1)-1
得方法数量=524287
也就是说20个字母,按照你那个方法,有524287种组合
热心网友
时间:2024-11-15 03:53
这个··如果是两个容器时不一样的且不能为空的情况下,总数不用说是2^20-2,具体算法为你只要看第一个容器放的是什么有几种不同的方法好了,按排列组合算法来说为:C20(1)+C20(2)+……+C20(19)=2^20-2 括号内为上标的···
热心网友
时间:2024-11-15 03:54
C(n,r)=n!/((n-r)!*r!)
这个式子的意思是从n中取出r个元素的方案数目
取几个数字就把r换一下,然后全部相加就行了
老套的办法.....就想到这种......
n!是阶乘