在有序List / Array / Buffer中查找无序序列值

时间:2015-10-28 11:51:21

标签: java algorithm

我正在尝试用Java创建游戏。我想创造一个你可以牺牲物品的功能,如果你牺牲了不同物品的正确“配方”,你会得到一些回报。食谱的一个伪示例可能是:

recipe1[1, 5, 32]
recipe2[4, 221, 21, 9]

配方的订单应该无关紧要 - 这意味着,如果我有的话 input = ..., 7, 5, 32, 1这应该为recipe1[1, 5, 32]返回 true - 但序列应该很重要,因此input = ..., 5, 7, 32, 1会返回 false ,即使输入确实包含recipe1的所有值。

我还没有真正的代码,因为我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

如果使用一组集,代码将更容易实现。

Set<Set<Integer>> recipes = new HashSet<>();

现在您可以检查食谱是否属于该组:

boolean contains = recipes.contains(new HashSet<>(Arrays.asList(1,5,32));

订单并不重要,但确切的项目是。

啊,我想我误解了,这与你所要求的完全相反。荡!

以正确的顺序寻找物品会使情况变得更糟,更乏味。基本上,您可以为序列中的第一项执行Collections.binarySearch()。如果你找到它,继续从那里看。在这种情况下,您的数据结构将是一个列表。

不,我认为它毕竟更接近我最初的理解。使用这组集合,但对输入的所有可能子列表进行测试。