設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

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

編程題目

[復制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2005-9-20 18:42:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
題目為:將1-9這9個數(shù)字分成三個3位數(shù),要求分出的第一個3位數(shù),正好是第二個三位數(shù)的

二分之一,是第三個3位數(shù)的三分之一。



游客,如果您要查看本帖隱藏內(nèi)容請回復
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2005-9-21 04:49:00 | 只看該作者
trynew之作,相必精彩,學習學習
3#
發(fā)表于 2005-9-21 18:34:00 | 只看該作者
佩服佩服

[此貼子已經(jīng)被作者于2005-9-21 14:18:16編輯過]

4#
發(fā)表于 2005-9-22 16:25:00 | 只看該作者
看看
5#
發(fā)表于 2005-9-22 16:32:00 | 只看該作者
不錯,排除輸出時候后,純運算時間3.9毫秒:

Public Sub Ck()

Dim i As Integer, j As Integer, k As Integer

Dim t1 As Double, t2 As Double, w As String

t1 = Timer

For k = 1 To 100

For i = 123 To 333

    For j = 1 To 9

        If InStr(1, i & 2 * i & 3 * i, j) = 0 Then Exit For

    Next j

    If j > 9 Then w = i & " " & 2 * i & " " & 3 * i

Next i

Next k

t2 = Timer

Debug.Print (t2 - t1) / 100

End Sub



[此貼子已經(jīng)被作者于2005-9-22 9:29:46編輯過]

6#
發(fā)表于 2005-9-22 17:25:00 | 只看該作者
字符串操作是性能殺手,代碼中盡量避免了使用字符串操作。

運行時間:0.98毫秒

Public Sub Test()

    Dim i As Integer, j As Integer, k As Integer, l As Integer, m As Integer, num As Long

    Dim t1 As Double, t2 As Double

    Dim data() As Byte

    Dim tags(8) As Boolean

    Dim w As String

    t1 = Timer

   

    For m = 1 To 1000

    For i = 1 To 3

        For j = 1 To 9

            If j <> i Then

            For k = 1 To 9

                If k <> i And k <> j Then

                    num = i * 100 + j * 10 + k

                    If num > 329 Then GoTo NOT_THIS

                    data = CStr(num * 1000000 + num * 2000 + num * 3)

                    Erase tags

                    

                    For l = 0 To UBound(data) Step 2

                        If data(l) = 48 Then GoTo NOT_THIS

                        If tags(data(l) - 49) Then GoTo NOT_THIS

                        tags(data(l) - 49) = True

                    Next l

                    

                    w = num & " " & num * 2 & " " & num * 3

                End If

NOT_THIS:

            Next k

            End If

        Next j

    Next i

    Next m

   

    t2 = Timer

   

    Debug.Print (t2 - t1) ; "毫秒"

End Sub

[此貼子已經(jīng)被作者于2005-9-22 9:53:06編輯過]

7#
發(fā)表于 2005-9-22 18:44:00 | 只看該作者
領教了各位高手!!
8#
 樓主| 發(fā)表于 2005-9-22 23:50:00 | 只看該作者
運行時間:0.298毫秒Public Sub Test4()

    Dim i As Integer, j As Integer, k As Integer, l As Integer, m As Integer, Num As Long

    Dim t1 As Double, t2 As Double

    Dim data() As Byte

    Dim tags(9) As Boolean

    Dim w As String    t1 = Timer

   

    For m = 1 To 1000

    For i = 1 To 3

        For j = 1 To 9

            If j <> i Then

            For k = 1 To 9

                If k <> i And k <> j Then

                    Num = i * 100 + j * 10 + k

                    If Num > 329 Then Exit For

                    'num = (num * 1000000 + num * 2000 + num * 3)                    Erase tags

                    

                    'For l = 0 To UBound(data) Step 2

                    '    If data(l) = 48 Then GoTo NOT_THIS

                    '    If tags(data(l) - 49) Then GoTo NOT_THIS

                    '    tags(data(l) - 49) = True

                    'Next l

                    tags(Num \ 100) = True

                    tags((Num Mod 100) \ 10) = True

                    tags(Num Mod 10) = True

                    tags((Num * 2) \ 100) = True

                    tags(((Num * 2) Mod 100) \ 10) = True

                    tags((Num * 2) Mod 10) = True

                    tags((Num * 3) \ 100) = True

                    tags(((Num * 3) Mod 100) \ 10) = True

                    tags((Num * 3) Mod 10) = True

                    

                    If tags(1) And tags(2) And tags(3) And tags(4) And tags(5) And tags(6) And tags(7) And tags(8) And tags(9) Then

                    

                    w = Num & " " & Num * 2 & " " & Num * 3

                    'Debug.Print w

                    End If

                End If

'NOT_THIS:

            Next k

            End If

        Next j

    Next i

    Next m

   

    t2 = Timer

   

    Debug.Print (t2 - t1); "毫秒"

End Sub

9#
發(fā)表于 2005-9-23 19:57:00 | 只看該作者
這個強的,甘拜下風了!

對了,Trynew最近怎么不上QQ,我找了你好幾次沒找到。上次你對EDF提出的建議我都已經(jīng)作了改進,現(xiàn)在已經(jīng)完全支持事件參數(shù)了,找不到你,我先發(fā)論壇了。

[此貼子已經(jīng)被作者于2005-9-23 14:36:12編輯過]

10#
發(fā)表于 2005-9-24 22:03:00 | 只看該作者
手癢了,再來一段:0.219毫秒

Public Sub Test5()

    Dim i As Integer, j As Integer, k As Integer, l As Integer, m As Integer

    Dim Num As Integer, Num2 As Integer, Num3 As Integer

    Dim t1 As Double, t2 As Double

    Dim data() As Byte

    Dim tag As Long

    Dim tags(9) As Long

    Dim w As String

   

    t1 = Timer

   

    For i = 0 To 9

        tags(i) = 2 ^ i

    Next i

    For m = 1 To 10000

    For i = 1 To 3

        For j = 1 To 9

            If j <> i Then

            For k = 1 To 9

                If k <> i And k <> j Then

                    Num = i * 100 + j * 10 + k

                    If Num > 329 Then Exit For

                    

                    Num2 = Num + Num

                    Num3 = Num + Num2

                    tag = 0

                    tag = tag Or tags(i)

                    tag = tag Or tags(j)

                    tag = tag Or tags(k)

                    tag = tag Or tags((Num2) \ 100)

                    tag = tag Or tags(((Num2) Mod 100) \ 10)

                    tag = tag Or tags((Num2) Mod 10)

                    tag = tag Or tags((Num3) \ 100)

                    tag = tag Or tags(((Num3) Mod 100) \ 10)

                    tag = tag Or tags((Num3) Mod 10)

                    If tag = &H3FE Then

                        w = Num & " " & Num * 2 & " " & Num * 3

                        'Debug.Print w

                    End If

                End If

            Next k

            End If

        Next j

    Next i

    Next m

   

    t2 = Timer

   

    Debug.Print (t2 - t1) / 10; "毫秒"

End Sub

[此貼子已經(jīng)被作者于2005-9-24 14:26:09編輯過]

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

本版積分規(guī)則

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

GMT+8, 2024-10-23 06:24 , Processed in 0.123449 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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