2017-03-26 3 views
0

行と列がストリングであり、行列に格納されている値が0または1の隣接行列を作成する必要がある場合は、ソースからdestへの接続があるかどうかを示します。例えば隣接行列:列と行がストリングの場合

:A-> B、B-> Cが接続している場合は次のように行列は次のようになります

a b c 

B 0 0 1

c 0 0

は、このような行列[a] [b] = 1を実装する解を探していました。 私たちが整数位置の代わりに文字列を使って行列にアクセスしようとすると、エラーがスローされます。

答えて

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の使用しようとすることができます。

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" 
関連する問題