需要创建一个Adjacency矩阵,其中行和列是字符串,存储在矩阵中的值是0或1,表示是否存在从源到dest的连接。
例如:如果a-> b,b-> c是连接,则矩阵应如下所示:
initialization
do {
if (!termination) break;
body
increment
} while (true);
a 0 1 0
b 0 0 1
c 0 0 0
正在寻找一种解决方案来实现这一点,如矩阵[a] [b] = 1; 当我们尝试使用字符串而不是整数位置访问矩阵时会抛出错误。
答案 0 :(得分:0)
您可以尝试编写字符串代码。例如:
Map<String, Integer> codec = new HashMap<String, Integer>() {{
put("a", 0);
put("b", 1);
put("c", 2);
}};
int adjMatrix[][] = new int[][]{
{0, 1, 0},
{0, 0, 1},
{0, 0, 0}
};
System.out.println(adjMatrix[codec.get("a")][codec.get("b")]); //prints "1"
或者您可以尝试使用Map
s:
Map<String, Map<String, Integer>> adjMatrix = new HashMap<>();
Map<String, Integer> aRow = new HashMap<>();
aRow.put("a", 0);
aRow.put("b", 1);
aRow.put("c", 0);
Map<String, Integer> bRow = new HashMap<>();
bRow.put("a", 0);
bRow.put("b", 0);
bRow.put("c", 1);
Map<String, Integer> cRow = new HashMap<>();
cRow.put("a", 0);
cRow.put("b", 0);
cRow.put("c", 0);
adjMatrix.put("a", aRow);
adjMatrix.put("b", bRow);
adjMatrix.put("c", cRow);
System.out.println(adjMatrix.get("a").get("b")); // prints "1"