读书人

问个跟‘全排列’有关的简单有关问题

发布时间: 2013-01-05 15:20:39 作者: rapoo

问个跟‘全排列’有关的简单问题
比如有3个字符:1, 2, 3
它的全排列就有:123, 132, 213, 231, 312, 321

有如下代码能将这6个结果输出:

Private Sub Command1_Click()
Const TEXT As String = "1231213213231"
Dim i As Long
For i = 1 To 11 Step 2
Debug.Print Mid$(TEXT, i, 3)
Next
End Sub


现在这个 TEXT 的长度为13个字符,For循环的步长为2。
谁能将它改得长度更小,用步长为1的For循环将它输出呢?

附加说明:
① 不限制输出的顺序,只要“完整、无重复”就行。
② 用递归、多重循环的就别来了,这不是这个贴子所讨论的范畴;不过有另外的妙招,不妨展示一下。
③ 另外莫在这争论这个方法好不好、合不合理等,这个只有在具体环境中才能进行衡量。


=======================================================

  欢迎顶贴,更欢迎给出了我需要的答案,来者有分

[解决办法]
我勒个顶……
[解决办法]
本帖最后由 bcrun 于 2012-11-29 15:31:05 编辑
Private Sub Command1_Click()
Const TEXT As String = "12312"
Dim i As Long
Dim s As Long
Dim s1 As Long

For i = 1 To 3
s = Mid$(TEXT, i, 3)
s1 = StrReverse(s)
Debug.Print s, s1
Next
End Sub

[解决办法]
本帖最后由 bcrun 于 2012-11-29 15:32:06 编辑
Private Sub Command1_Click()
Const TEXT As String = "123"
Dim i As Long
Dim s As Long
Dim s1 As Long

For i = 1 To 3
s = Mid(TEXT, i, 3) & Left(TEXT, i - 1)
s1 = StrReverse(s)
Debug.Print s, s1
Next i
End Sub

读书人网 >VB

热点推荐