整数数组和两个布尔数组的唯一键

时间:2018-11-07 09:12:57

标签: hashmap key hashtable memoization

我正在努力创建一个函数,这将为此类参数提供关键:

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。* 。因此,现在我试图创建一个哈希表,但是我不知道如何为此类参数创建哈希函数。

0 个答案:

没有答案