我正在尝试用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的所有值。
我还没有真正的代码,因为我不知道该怎么做。
答案 0 :(得分:0)
如果使用一组集,代码将更容易实现。
Set<Set<Integer>> recipes = new HashSet<>();
现在您可以检查食谱是否属于该组:
boolean contains = recipes.contains(new HashSet<>(Arrays.asList(1,5,32));
订单并不重要,但确切的项目是。
啊,我想我误解了,这与你所要求的完全相反。荡!以正确的顺序寻找物品会使情况变得更糟,更乏味。基本上,您可以为序列中的第一项执行Collections.binarySearch()
。如果你找到它,继续从那里看。在这种情况下,您的数据结构将是一个列表。
不,我认为它毕竟更接近我最初的理解。使用这组集合,但对输入的所有可能子列表进行测试。