首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

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

问个跟‘全排列’有关的简单问题
比如有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

热点排行