设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 8350|回复: 17
打印 上一主题 下一主题

求最簡單代碼

[复制链接]
跳转到指定楼层
1#
发表于 2005-6-9 15:19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有6個數,3.1   1.7    2    5.3   0.9   7.2 ,怎樣相加最接近10?求最簡單代碼。        
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-6-9 15:44:00 | 只看该作者
其中2个数相加,还是任意多个数相加?
3#
 楼主| 发表于 2005-6-9 16:06:00 | 只看该作者
任意,但不重復
4#
 楼主| 发表于 2005-6-9 19:47:00 | 只看该作者
頂一下
5#
发表于 2005-6-13 16:04:00 | 只看该作者
答案有两个:

2+0.9+7.2

1.7+2+5.3+0.9程序已经发送到你的信箱!不一定是最简单的代码,但是可行。仅供参考!
6#
 楼主| 发表于 2005-6-13 17:01:00 | 只看该作者
這是電腦報上的一道題,可拿50元大洋,accessuser007可將你的代碼再優化一下發過去試試。信箱:pcw-cjy@vip.sina.com  
7#
发表于 2005-6-13 18:02:00 | 只看该作者
把代码放上来看一看
8#
 楼主| 发表于 2005-6-13 18:07:00 | 只看该作者
附件如下:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
 楼主| 发表于 2005-6-13 18:08:00 | 只看该作者
聲明:不是我作的,是accessuser007
10#
发表于 2005-6-13 20:52:00 | 只看该作者

回复:(lzx-shmily)求最簡單代碼



其实就是求组合数,也可以使用递归算法。下面是优化一下原来的代码

Dim showstr As String

Dim totalA As Single

Dim A(6) As Single

Private Sub 命令0_Click()

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim l As Integer

Dim m As Integer

A(0) = 3.1

A(1) = 1.7

A(2) = 2

A(3) = 5.3

A(4) = 0.9

A(5) = 7.2

totalA = 10

For i = 0 To 5

  For j = i + 1 To 5

    For k = j + 1 To 5

      For l = k + 1 To 5

        For m = l + 1 To 5

            CountNum i, j, k, l, m

        Next

        CountNum i, j, k, l, 6

      Next l

      CountNum i, j, k, 6, 6

    Next k

    CountNum i, j, 6, 6, 6

  Next j

  CountNum i, 6, 6, 6, 6

Next i

MsgBox Replace(showstr, " + 0", "") & ";  totalA=" & Round(totalA, 2)

End Sub



Public Function CountNum(i As Integer, j As Integer, k As Integer, l As Integer, m As Integer)

      If Abs(A(i) + A(j) + A(k) + A(l) + A(m) - 10) = totalA Then

        showstr = showstr & ";  " & CSng(A(i)) & " + " & CSng(A(j)) & " + " & CSng(A(k)) & " + " & CSng(A(l)) & " + " & CSng(A(m))

      ElseIf Abs(A(i) + A(j) + A(k) + A(l) + A(m) - 10) < totalA Then

        totalA = Abs(A(i) + A(j) + A(k) + A(l) + A(m) - 10)

        showstr = CSng(A(i)) & " + " & CSng(A(j)) & " + " & CSng(A(k)) & " + " & CSng(A(l)) & " + " & CSng(A(m))

      End If

End Function

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 23:11 , Processed in 0.090095 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表