首页 文章

划分数字列表的算法总结> = X万

提问于
浏览
-3

我得到9个数字,我想分成两个列表,两个列表总结时需要达到一定数量 . 例如,我得到了 int 的列表:

List<int> test = new List<int>
{
    1963000, 1963000, 393000, 86000,
    393000, 393000, 176000, 420000,
    3193000
};

我希望有两个数字列表,当你总结它们时,它们都达到了400多万 .

如果2个列表没有相同数量的数字,则无关紧要 . 如果只需要2个数字就可以在1个列表中达到4百万,而7个数字一起达到700万,那很好 .

只要两个列表总结等于400万或更高 .

1 回答

  • 1

    这个特定的金额是否足够低,容易达到?如果是,那么您的算法可能很简单:迭代i从1到项目数 . 总结第一个i数字 . 如果总和高于你的某个总和(例如4百万),那么你就完成了,否则增加i .

    但是:如果您的某些总和很高并且找到分区并不是那么简单,那么您就拥有着名的Partition Probem(https://en.wikipedia.org/wiki/Partition_problem),这不是那么简单,但有一些算法 . 阅读此维基百科artikle或尝试谷歌"Partition problem solution"或类似 .

相关问题