我有一个相当困难的问题(甚至可能是一个 NP 难题 ^^),在大量结果中寻找解决方案。也许有一个算法。
下面的练习是人为的,但它是一个很好的例子来说明我的问题。
有一个带有整数的大数组。可以说它有 100.000 个元素。
int numbers[] = {-123,32,4,-234564,23,5,....}
我想以一种相对快速的方式检查这个数组中任何两个数字的总和是否等于 0。换句话说,如果数组有“-123”,我想查找是否还有一个“123”数字。
最简单的解决方案是蛮力 - 检查一切。这给了 100.000 x 100.000 一个很大的数字 ;-) 显然蛮力方法可以通过优化。订单号并仅检查负数和正数。我的问题是 - 有没有比优化蛮力更好的方法来找到解决方案?