【发布时间】:2012-02-19 09:42:14
【问题描述】:
我遇到了这个 - 可能是微不足道的 - 循环/组合问题,类似于二进制组合。我不知道如何有效地处理它。考虑这种情况,我需要一个独特的循环来依次遍历所有这些组合:
Round ABC
01. 000 <- values of A=0, B=0, C=0
02. 001
03. 010
04. 011
05. 100
06. 101
07. 110
08. 111
09. 002
10. 012
11. 102
12. 112
13. 020
14. 021
15. 120
16. 121 <- values of A=1, B=2, C=1
17. 022
18. 122
19. 220
20. 221
21. 222
除了有 12 个字母 (A-L),而且“位”大小不仅仅是 0,1 或 2,而是任何整数(从 0 可能到 1000 或 1024,不要让它变得疯狂)。我知道这是一个巨大的组合负载,但我只会废弃前几个也满足我其他条件的组合。所以不必担心计算的疯狂。
免责声明:订单必须完全如上所示。不是多个 FOR 循环,首先是 C 的 0-1024,然后是 B。
提前谢谢,我似乎找不到“算法”的方法。
更新:添加了 ABC/012 组合的完整序列
问候, 凯特
解释:
我在尝试解决分析硬币/纸币组合的金额问题时遇到了这个问题:
例如 $5001 来找出 x 个最佳组合。
10x $500 + 1x $1
50x $100 + 1x $1
..
现在字母 (A,B,C..) 对应于纸币或硬币的许多可能价值 ($1, $5,.. $100)。而基数对应于该纸币/硬币的数量(例如 $5001/$5000 = 1piece max.)
【问题讨论】:
-
有趣的序列 - 为什么第二组(值 9 到 16)的第一个位置从来没有“2”?
-
它确实,它继续:022, 122, 220, 221, 222,..
-
您可能想解释一下顺序,我发现任何人都不太可能根据您目前给出的内容确定确切的顺序。
-
我想只要你能用简单的英语表达你需要什么样的序列,你也会有你要找的算法。+
-
理解序列进展的确切规则本身就是一个挑战。几乎就像智商测试。
标签: c# java algorithm for-loop binary