VB里INPUTBOX里输入中文时到INPUTBOX筐里时是乱码是什么原因,能处理吗?
还有个排列组合问题:
输入两个数:M,N (M>N)。 如果想从M中选N个数做排列,并且把所有的排列结果都显示出来怎么完成呢?
假如有5(是M)个数,1,2,3,4,5。
从这5个数中选出3(是N)个数做组合显示为
123 124 125 134 135 145 234 235 345
这就是他们的组合怎样用代码编出任意M数中选出N个数
谢谢
还有个排列组合问题:
输入两个数:M,N (M>N)。 如果想从M中选N个数做排列,并且把所有的排列结果都显示出来怎么完成呢?
假如有5(是M)个数,1,2,3,4,5。
从这5个数中选出3(是N)个数做组合显示为
123 124 125 134 135 145 234 235 345
这就是他们的组合怎样用代码编出任意M数中选出N个数
谢谢
M,N的问题,应该是用排除法,具体是先举出所有的排列值,再1.排除掉值里有相同元素的,2.排除掉只是顺序颠倒而元素相同的,得出的就是组合的结果了,具体实现,好象用递归是最简洁的
TEXTBOX: NAME=TEXT2,NAME=TEXT3
LISTBOX: NAME=LIST1
LABEL: NAME=LABEL1,CAPTION="M:"
NAME=LABEL2,CAPTION="N:"
COMMANDBUTTON: NAME=COMAAND1,CAPTION="列出"
OPTION: NAME=OPTION1,INDEX=0,CAPTION="排列",VALUE=TRUE
NAME=OPTION1,INDEX=1,CAPTION="组合",VALUE=FALSE Option Explicit
Dim S, ST As String
Dim TL As Integer
Dim TL1 As IntegerPrivate Sub Command1_Click()List1.Clear: TL1 = 0
TL = Val(Text3.Text)
If Option1(1).Value Then
Compage Val(Text2.Text), Val(Text3.Text)
Else
PL Val(Text2.Text), Val(Text3.Text)
End If
Me.Caption = TL1 & " 个结果"End SubSub Compage(M, N As Integer) '为了方便,假定M个数就是从1到M的自然数
If M <= N Or M < 1 Or N < 1 Then Exit Sub
Dim i As Integer
S = ""
For i = TL - N + 1 To M
ST = Left(ST, TL - N)
If N > 1 Then ST = ST & Trim(CStr(i)) Else S = ST & Trim(CStr(i))
DoEvents
If N > 1 Then
Compage M, N - 1
Else
If NotExistTheSame(S) Then '去掉相同的元素
List1.AddItem Trim(CStr(S))
TL1 = TL1 + 1
End If
End If
Next i
End SubSub PL(M, N As Integer) '为了方便,假定M个数就是从1到M的自然数
If M <= N Or M < 1 Or N < 1 Then Exit Sub
Dim i As Integer
S = ""
For i = 1 To M
ST = Left(ST, TL - N)
If N > 1 Then ST = ST & Trim(CStr(i)) Else S = ST & Trim(CStr(i))
DoEvents
If N > 1 Then
PL M, N - 1
Else
List1.AddItem Trim(CStr(S))
TL1 = TL1 + 1
End If
Next i
End SubFunction NotExistTheSame(ByVal Stmp As String) As Boolean
Dim i, j, k As Integer
Dim SM, SP As String * 1
k = Len(Stmp)
For i = 1 To k '后面的必须大于前面的
SM = Val(Mid(Stmp, i, 1)) '第N个
For j = i + 1 To k
SP = Val(Mid(Stmp, j, 1)) '第N+K个
If SM >= SP Then NotExistTheSame = False: Exit Function
Next j
Next i
NotExistTheSame = True
End Function
我用的是排除法,即你应该先把可能出现的都找出来,且M不能大于9
应该有更直接的办法,我一下子想不出来
如果你想出来了发短消息给我
我QQ是29950351联系
要使它具有普遍适用性,应该定义一个含M个元素的数组或者其实的OBJECT(如果在JAVA中更好,可以通过枚举来实现,那样可以包含N种OBJECT),在列出这些OBJECT时,仅通过引用它的ID来完成
JAVA我不会没办法还没学呢哈哈
你是不是装了Office2000?
你看一下字体库里有没有一个细明体(文件名好象叫MingLiu什么的)的字体?
把它删除掉就没问题了!