出一个思考题
如何将一个字符串中固定数量的字符做一个全排列,写出程序。举一个例子:abcd 的2个字符的排列是 ab ac ad ba bc bd ca cb cd da db dc 。 问题点数:20、回复次数:25Top
1 楼pctommy(pctommy)回复于 2001-08-29 17:47:02 得分 0
我写了一个,你可以试试:
Dim nRange As Integer
Dim nDeep As Integer
Dim stString As String
Dim stOut As String
Function Start(stOut As String) As String
Dim i
Dim stPrivate As String
nDeep = nDeep + 1
If nDeep = nRange + 1 Then nDeep = nDeep - 1: GoTo SkipThisLayer
For i = 1 To Len(stString)
stPrivate = Mid(stString, i, 1)
stOut = Start(stOut + stPrivate)
Next i
: SkipThisLayer
End FunctionTop
2 楼pctommy(pctommy)回复于 2001-08-29 17:53:38 得分 0
我写了一个,你可以试试:
Dim nRange As Integer '要排列几个字符
Dim nDeep As Integer '当前深度
Dim stString As String '要输入的字符串
Dim stOut As String '当前组合
Function Start(stOut As String) As String
Dim i
Dim stPrivate As String
nDeep = nDeep + 1
If nDeep = nRange + 1 Then nDeep = nDeep - 1: GoTo SkipThisLayer
For i = 1 To Len(stString)
stPrivate = Mid(stString, i, 1)
If Instr(stOut,stPrivate)<>0 Then
stOut = Start(stOut + stPrivate)
End If
Next i
: SkipThisLayer
End FunctionTop
3 楼pctommy(pctommy)回复于 2001-08-29 17:54:38 得分 0
第一程序是错的Top
4 楼lou_df(ldf)回复于 2001-08-30 11:08:29 得分 0
我测试一下。Top
5 楼lou_df(ldf)回复于 2001-08-30 11:27:03 得分 0
无法得出正确结果。Top
6 楼ozw(沧浪客)回复于 2001-08-30 12:28:51 得分 0
是不是想做黑客程序啊!?Top
7 楼lou_df(ldf)回复于 2001-08-30 15:10:43 得分 0
黑客怎么也跟我想到一起去了。不过这个思考题只是看一下大家的功力而已。Top
8 楼ERR(太阳)回复于 2001-08-30 16:19:04 得分 0
两个TextBox,一个输入,一个输出
一个CommandButton,运行
Private Sub Command1_Click()
Dim strScan As String, strOut As String
Dim i As Integer, iCur As Integer, iLen As Integer
strScan = Text1.Text
iLen = Len(strScan)
strOut = ""
For i = 1 To iLen
For iCur = 1 To iLen
If iCur <> i Then strOut = strOut & Mid(strScan, i, 1) & Mid(strScan, iCur, 1) & " "
Next iCur
Next i
Text2 = strOut
End Sub
Top
9 楼pctommy(pctommy)回复于 2001-08-30 16:53:23 得分 20
非常抱歉,我肯定有问题:
这回保证没有错:
Dim nRange As Integer
Dim nDeep As Integer
Dim stString As String
Dim st1 As String
Dim st2 As String
Private Sub Command1_Click()
nRange = 3
stString = "abcd"
st2 = ""
Start (st2)
End Sub
Sub Start(stPrv As String)
Dim i
Dim stPrivate As String
nDeep = nDeep + 1
If nDeep = nRange + 1 Then nDeep = nDeep - 1: GoTo SkipThisLayer
For i = 1 To Len(stString)
stPrivate = Mid(stString, i, 1)
If InStr(stPrv, stPrivate) = 0 Then
st1 = stPrv + stPrivate
If nDeep = nRange Then MsgBox st1
Start (st1)
End If
Next i
nDeep = nDeep - 1
SkipThisLayer:
End SubTop
10 楼ColderRain(一切尽在不言中)回复于 2001-08-30 18:57:48 得分 0
《数据结构》里有这样的例题!好象不是这么简单哟!Top
11 楼pctommy(pctommy)回复于 2001-08-30 19:12:34 得分 0
《数据结构》是什么书?Top
12 楼pctommy(pctommy)回复于 2001-08-31 09:35:21 得分 0
upTop
13 楼homqom(操作者)回复于 2001-08-31 09:53:28 得分 0
Dim nRange As Integer
Dim nDeep As Integer
Dim stString As String
Dim st1 As String
Dim st2 As String
Private Sub Command1_Click()
nRange = 3
stString = "abcd"
st2 = ""
Start (st2)
End Sub
Sub Start(stPrv As String)
Dim i
Dim stPrivate As String
nDeep = nDeep + 1
If nDeep = nRange + 1 Then nDeep = nDeep - 1: GoTo SkipThisLayer
For i = 1 To Len(stString)
stPrivate = Mid(stString, i, 1)
If InStr(stPrv, stPrivate) = 0 Then
st1 = stPrv + stPrivate
If nDeep = nRange Then MsgBox st1
Start (st1)
End If
Next i
nDeep = nDeep - 1
SkipThisLayer:
End Sub Top
14 楼pctommy(pctommy)回复于 2001-08-31 10:05:44 得分 0
upTop
15 楼pctommy(pctommy)回复于 2001-08-31 10:07:45 得分 0
如果仅仅完成叙述的功能,回朔就是这么简单Top
16 楼pctommy(pctommy)回复于 2001-08-31 12:38:56 得分 0
upTop
17 楼lou_df(ldf)回复于 2001-08-31 14:46:23 得分 0
pctommy(pctommy)和homqom(操作者)答案一样,如果是同一人,我就给一个人分数。该不会抄袭吧?Top
18 楼pctommy(pctommy)回复于 2001-09-01 15:56:38 得分 0
是我先答的,你不信我就给你vbp文件看。Top
19 楼pctommy(pctommy)回复于 2001-09-01 16:03:56 得分 0
还有,我写程序的时候,string变量我一直都用st前缀,这也算独一无二了
homqom(操作者)我根本就不认识!
我的代码可是写了整整一个下午了啊…………!!
Top
20 楼pctommy(pctommy)回复于 2001-09-01 17:22:44 得分 0
不过,给谁分倒不重要,编程是为了快乐,所以才编程Top
21 楼小乖(Xi@oGu@i)回复于 2001-09-01 17:50:18 得分 0
不了解什么意思。Top
22 楼pctommy(pctommy)回复于 2001-09-02 10:57:23 得分 0
不了解什么?如果是程序方面的我可以尽力解释Top
23 楼pctommy(pctommy)回复于 2001-09-02 12:09:02 得分 0
upTop
24 楼lou_df(ldf)回复于 2001-09-03 10:30:48 得分 0
感谢pctommy(pctommy)。分给你了。思考题是帮助大家开拓思路,活跃气氛。这次的题目比较基础一些,相信很多人都感兴趣。Top
25 楼pctommy(pctommy)回复于 2001-09-03 19:42:10 得分 0
好!大家都来研究一些关于算法的东东!Top




