設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 10270|回復: 19
打印 上一主題 下一主題

[高0]求最短的代碼.

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2005-3-19 03:09:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
要求用戶輸入一個字串,電腦輸出這個字串的全排序,如:

當用戶輸入"ABC"時,電腦輸出:

ABC

ACB

BAC

BCA

CAB

CBA

當用戶輸入"ABCD"時,電腦輸出:

ABCD

ABDC

ACBD

ACDB

...

最短代碼者勝出![em03]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2005-3-20 02:17:00 | 只看該作者
Dim a, x, y, z As String

Dim i, s, n, k As Integera = InputBox("請輸入一個字附串")

i = Len(a)

   's 為完全排列的總數(shù)量

s = i

For n = 1 To i - 1

s = s * (i - n)

NextDo

   Do

     x = Mid(a, Int(Rnd * i + 1), 1)

     If InStr(y, x) = 0 Then y = y & x

   Loop Until Len(y) = i

   

   If InStr(z, y) = 0 Then

     z = z & y & ";"

     y = ""

     k = k + 1

   End If

Loop Until k = s

MsgBox z
3#
 樓主| 發(fā)表于 2005-3-20 03:58:00 | 只看該作者
情比金堅的答案不行呀,我輸入了ABC之后再執(zhí)行,沒有輸出正確的答案..有人能做這題嗎?[em08]
4#
發(fā)表于 2005-3-20 04:55:00 | 只看該作者
我也知道,還在想,你認為錯在哪了?(用for...next,多試幾次就行)



請李老師指點一下:我的想法那么單純,為啥實現(xiàn)不了呢?



[此貼子已經被作者于2005-3-19 22:35:57編輯過]

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
5#
 樓主| 發(fā)表于 2005-3-20 09:55:00 | 只看該作者
這種算法是不行的.你使用RND來求所有的可能排序,如果用戶輸入的字串很長,如"abcdefg",序列的數(shù)量就會非常多,RND什么時候才能碰得完所有的序列?很可能等上非常上的時間才能完成,或者永遠也完成不了,因為RND是一個未知值,等待的時間也是未知的!!![em06]我用的算法,只是執(zhí)行幾條指令就可以馬上得到新的排序.而且是按順序的.所有指令執(zhí)行完的話,就已經求出了全部的排序.千萬不能少看這題目,有興趣的人可以做做....[em07]
6#
發(fā)表于 2005-3-20 21:31:00 | 只看該作者
可以完成,但我想有點犯規(guī):







只有我們在玩,他們都不來~~~~~~[em04]

[此貼子已經被作者于2005-3-20 13:33:30編輯過]

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
7#
發(fā)表于 2005-3-20 23:28:00 | 只看該作者


Private Sub 命令0_Click()

    Dim i As Integer, j As Integer, strSql(4) As String

    For i = 0 To DCount("*", "表1") - 1

        strSql(1) = strSql(1) & " & [" & i & "]"

        strSql(2) = strSql(2) & ",[" & i & "].txt as " & i

        strSql(3) = strSql(3) & ",表1 as " & i

        For j = i + 1 To DCount("*", "表1") - 1

            strSql(4) = strSql(4) & " and [" & i & "]<>[" & j & "]"

        Next j

    Next

    CurrentDb().QueryDefs("Sql").SQL = "SELECT " & Mid(strSql(1), 4) & " as Str FROM (select " & Mid(strSql(2), 2) & " from " & Mid(strSql(3), 2) & ") where (" & Mid(strSql(4), 6) & ")"

    DoCmd.OpenQuery "Sql"

End Sub

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
8#
 樓主| 發(fā)表于 2005-3-21 02:56:00 | 只看該作者
Trynew的方法可是強哦,我用的是純計算方法.看來TryNew的代碼是最短了.哈哈....[em02]
9#
發(fā)表于 2005-3-21 03:43:00 | 只看該作者
可是我連計算也不會,只會瞎貓抓耗子的方法,李老師給個提示看看[em02]
10#
 樓主| 發(fā)表于 2005-3-21 07:48:00 | 只看該作者
插入一個模塊,再運行RunMe就可以了.

Dim InPutString As String

Sub GetData(s As String, temp As String)

  Dim i As Integer

  If Len(temp) = Len(InPutString) Then

    MsgBox temp

  Else

    For i = 1 To Len(s)

      GetData Left(s, i - 1) & Right(s, Len(s) - i), temp + Mid(s, i, 1)

    Next i

  End If

End Sub

Sub RunMe()

  InPutString = InputBox("請輸入一個字串:", , "ABC")

  GetData InPutString, ""

End Sub





[em05]呵呵,經過代碼優(yōu)化,我只用了11句代碼哩!!(不含過程首尾)

[此貼子已經被作者于2005-3-20 23:49:42編輯過]

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 06:32 , Processed in 0.090829 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表