【发布时间】:2016-05-06 12:30:14
【问题描述】:
这是我关于 SO 的第一个问题,如果不合适/离题,请告诉我。我把上面的问题说得很笼统,但我遇到的具体问题如下:
我想编写一段 Java 代码,该代码生成一个列表,其中列出了所有可能的州组合,这些组合会导致选举团平局。最短的可能列表将包含 12 个州,最长的可能列表将包含 38 个州。我做了一些(非常)粗略的计算,所有可能的组合都达到了(也许)10 万亿。我仍处于算法的规划阶段,但假设 10 万亿是所需步数的绝对下限,我想实际数字会高得多。
我对编程很陌生,想知道是否值得编写这段代码 - 一项粗略的计算表明该算法需要大约 30 年才能完成(!)。但是,我基于维基百科建议的 MIP(每秒百万条指令)值进行了此计算,我不知道这到底有多准确(或者,实际上,对于这些目的而言,什么实际上算作“指令”)。
非常感谢您阅读和/或回答:)
【问题讨论】:
-
第一个问题:您打算对列表做什么? (显然不适合内存或磁盘...)
-
您在 Java 中的一条语句实际上最终会成为 CPU 的几条指令(几个周期)。你是怎么计算的?你怎么知道你需要多少个 cpu 周期?
-
@JonSkeet 这是一个公平的问题,我已经想到了 - 答案是我真的不想要 10 万亿长的列表,我只想要一个(短得多)实际导致平局的组合列表。
-
@KorayTugay 简短的回答是:我不知道我需要多少 CPU 周期,只知道它至少需要 10 万亿,实际上更多。至于我是如何计算的,我计算出 12、38 和 25 的列表有多少种可能的组合,然后取平均值并将其乘以 26。我知道,草率,但我只是想要一个大概的数字(假设非常大的球场)
标签: java algorithm performance combinations