Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4766|回复: 6

[已解决]求助,凑数算法

[复制链接]
发表于 2016-10-28 14:46 | 显示全部楼层 |阅读模式
本帖最后由 lipenghui 于 2016-10-28 14:50 编辑

1,有四个数分别为1、4、6、9进行凑数,要凑的数为10
2,凑数的方法为,1*10=10是一种方案,1*2+4*2=10是第二种方案,4*1+6*1=10是第三种,以此类推

用VBA程序把这几种方案都列出来,如下图



最佳答案
2016-10-28 18:39
Sub test()
    Dim A, B, i, j, k, l
    A = Array(1, 4, 6, 9)
    ReDim B(UBound(A))
    For i = 0 To UBound(B)
        B(i) = 10 \ A(i)
    Next i

    For i = 0 To B(0)
        For j = 0 To B(1)
            For k = 0 To B(2)
                For l = 0 To B(3)
                    If A(0) * i + A(1) * j + A(2) * k + A(3) * l = 10 Then Debug.Print i, j, k, l
                Next l
            Next k
        Next j
    Next i
End Sub

这样可以吗?

111.jpg

凑数.zip

239.89 KB, 下载次数: 14

发表于 2016-10-28 18:39 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim A, B, i, j, k, l
    A = Array(1, 4, 6, 9)
    ReDim B(UBound(A))
    For i = 0 To UBound(B)
        B(i) = 10 \ A(i)
    Next i

    For i = 0 To B(0)
        For j = 0 To B(1)
            For k = 0 To B(2)
                For l = 0 To B(3)
                    If A(0) * i + A(1) * j + A(2) * k + A(3) * l = 10 Then Debug.Print i, j, k, l
                Next l
            Next k
        Next j
    Next i
End Sub

这样可以吗?

回复

使用道具 举报

发表于 2016-10-31 09:52 | 显示全部楼层
爱疯 发表于 2016-10-28 18:39
Sub test()
    Dim A, B, i, j, k, l
    A = Array(1, 4, 6, 9)

有没有通用的方法?
10 不固定
1,4,6,9 不固定
回复

使用道具 举报

发表于 2016-10-31 10:02 | 显示全部楼层
通用的没学会  
回复

使用道具 举报

 楼主| 发表于 2016-10-31 10:32 | 显示全部楼层
爱疯 发表于 2016-10-28 18:39
Sub test()
    Dim A, B, i, j, k, l
    A = Array(1, 4, 6, 9)

你好,我想问一下,这个可否帮忙写成,递归的形式,因为1,4,6,9这个,个数可能不一定,有时可能是4个数去算有时可能是8个


回复

使用道具 举报

 楼主| 发表于 2016-10-31 10:34 | 显示全部楼层

哈哈,好吧,不过还是谢谢你了



回复

使用道具 举报

发表于 2017-10-25 14:30 | 显示全部楼层
通用的。
Pic.png
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 06:53 , Processed in 0.326173 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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