0

这基本上就是我的程序正在做的事情:

如果您有 5 种不同的衬衫和 4 条不同的裤子可供选择,那么您可以穿 20 种不同的衬衫和裤子组合,我的程序将遍历所有 20 种组合以确定哪个是“最好的”穿。

除了,在我的情况下,有 11 种不同类型的服装(如头饰、手套、裤子、耳环、鞋子、斗篷等),每个类别多达 10 件。因此,可能有多达 11^10 种组合,当我尝试在每个类别中仅使用 4 个或 11^4 运行我的程序时,大约需要 5 秒才能完成。11^10 需要 DAYS 天。

目前,我正在进行的是 11 个嵌套在彼此内部的循环来遍历每个组合。这显然不是最好的方法,因为它太慢了。我怎样才能让它更快?对于上下文,我有 1 个“外部”ArrayList,其中包含 11 个 ArrayList,这 11 个 ArrayList 中的每一个都是一个对象列表(衣服)。

4

2 回答 2

0

如果不使用蛮力搜索,确实没有办法做到这一点,但是您可以通过生成一系列可能的匹配项来减少选择区域,并且只遍历列表中在该范围内的项目。

于 2012-04-13T02:01:36.293 回答
0

编辑

由于您的分数是相加的,因此每个类别中最好的衣服是 dex+str+int 总和最好的那件。这意味着您不需要考虑组合,只需选择最好的衬衫,然后是最好的裤子等。所以 11 个循环,而不是 11 个嵌套循环。

旧答案

在一般情况下,蛮力(你现在正在做的事情)是保证正确答案的唯一方法。

然而,在某些情况下,你可以做得更好:例如,如果我知道如果一个衬衫-裤子组合比另一个衬衫-裤子组合“更好”,那么无论我选择什么其他衣服,我都能找到最好的衬衫- 先裤子搭配,再考虑搭配什么衣服最好。这本质上是一个贪婪的搜索。

于 2012-04-13T02:08:50.000 回答