none
请大家帮忙设计一个更好的算法,谢谢! RRS feed

  • 问题

  •  对于学编程,我不是科班出身,没有进行过正规的计算机教育,对计算机原理了解不是很深,通过艰难的自学现在也能写出一些程序来,但总是不自信,总觉得是不是有更好的算法比我的算法执行起来效率更高,是不是有更优化的代码即显得简洁又能显示出水平,现在看来程序语言跟我们说的语言一样,要表达同样的意思有多种说法,有的说法显得一个人更有学问.
    下面这段代码就让我有点不自信,有一个列表框,里面的项目是这种格式:01 02 03 04 05 06 07,如果里面有一个项目包含3个相同尾数的话,就删除掉这个项目.这段代码已通过测试,有没有更好的方法来解决这个问题呢?谢谢!
     For i As Integer = List1.Items.Count - 1 To 0 Step -1
             Dim b As Boolean = False
             For x As Integer = 2 To 14 Step 3
                For y As Integer = x + 3 To 17 Step 3
                   For z As Integer = y + 3 To 20 Step 3
                      If CInt(Mid(List1.Items(i), x, 1)) = CInt(Mid(List1.Items(i), y, 1)) And _
                         CInt(Mid(List1.Items(i), y, 1)) = CInt(Mid(List1.Items(i), z, 1)) Then
                         List1.Items.RemoveAt(i)
                         b = True
                      End If
                      If b Then Exit For
                   Next
                   If b Then Exit For
                Next
                If b Then Exit For
             Next
          Next

    xrhigh
    2009年2月20日 2:25

答案

  • a= List1.Items(i).split(" ")

    hashtable t
    for i=0 to ubound(a)
        if(t.cntains(a(i)) then'是否存在相同数
                t(a(i))= int.parse(t(a(i)))+1
        if(int.parse(t(a(i))))=3 then
     List1.Items.RemoveAt(i)
                         b = True

        endif

    else
    t.add(a(i),1)
    endif

    next

    http://feiyun0112.cnblogs.com/
    2009年2月20日 4:00
    版主