我正在努力创建一个函数,这将为此类参数提供关键:
int[] pos | int[] ongoing | int[] completed
{17, 10} | {1,0,0,1} | {0,1,0,0}
pos[0] < 200
pos[1] < 200
pos数组中的整数始终小于200。
我需要此密钥来记录我的TSP问题。我在每次递归调用时都创建一个键,并检查该键是否已存在于我的备注数组中。
我找到了一个解决方案:
Map <String, Integer> states = new HashMap<String, Integer>();
然后像这样使String键:
public String makeKey() {
String key = "";
key += pos[0];
key += pos[1];
for (int i = 0; i < ongoing.length; i++) {
key += ongoing[i];
key += completed[i];
}
return key;
}
并检查备忘录中是否存在密钥:
State curState = new State(pos, ongoing, completed);
String key = curState.makeKey();
if (states.containsKey(key)) {
return states.get(key);
}
但是问题是该分配不允许我使用java.util。* 。因此,现在我试图创建一个哈希表,但是我不知道如何为此类参数创建哈希函数。