2015-12-02 5 views
0

Так вот код я прямо сейчас:Как сделать матрицу смежности в Java

for (int i = 0; i < 3; i++){ 
      for (int j = 0; j < 3; j++){ 
       System.out.print(B[i][j] + ": "); 
       if (i < 2){ 
        temp2 = B[i+1][j]; 
        System.out.print(temp2 + "-"); 
       } 

       if (j < 2){ 
        temp2 = B[i][j+1]; 
        System.out.print(temp2 + "-"); 
       } 

       if (i > 0){ 
        temp2 = B[i-1][j]; 
        System.out.print(temp2 + "-"); 
       } 
       if (j > 0){ 
        temp2 = B[i][j-1]; 
        System.out.print(temp2 + "-"); 
       } 
       System.out.println(" "); 
      } 
     } 

Что он делает сейчас печатает из списка, который выглядит следующим образом:

1: 4-0 
0: 2-3-1 
3: 6-0 
4: 7-2-1 
2: 5-6-0-4 
6: 8-3-2 
7: 5-4 
5: 8-2-7 
8: 6-5 

Этот список - смежные вершины для этого графика.

1 0 3 
4 2 6 
7 5 8 

Я проверил и распечатает правильные смежные вершины для каждого значения val ue в этом массиве 2d. Поэтому мне интересно, как бы вы превратили это в матрицу смежности. Я знаю, что мне нужно сначала создать 2d-массив размером 9x9, но у меня возникли проблемы с фактическим размещением значений в правильных местах в массиве. Итак, когда я нахожу соседнюю вершину, как я могу поместить это значение в матрицу смежности? Я мог бы также попытаться включить их в связанный список, потому что это займет меньше места, но я думаю, что матрица будет проще.

+0

Поскольку первая строка показывает, что 1 подключен к 4 и к 0, это не так просто, как 'm [1] [4] = 1; м [4] [1] = 1; m [1] [0] = 1; m [0] [1] = 1; '? – Andreas

+0

Когда ваш код выводит '1: 4-0', это не было жестко запрограммировано? Нет, это были переменные, производящие номера '1',' 4' и '0'. Поэтому, когда я (в качестве примера) показал, что '1: 4-0' приведет к' m [1] [4] = 1; м [4] [1] = 1; m [1] [0] = 1; m [0] [1] = 1; ', оба будут использовать эти переменные. Я не собирался предполагать, что вы напишете эти 4 задания напрямую, только через код эти 4 назначения будут сделаны. – Andreas

+0

nvm Я только что понял. Мне пришлось создать переменную temp1 и установить ее в B [i] [j]. –

ответ

0

Если вы называете 9x9 матрицу смежности M, и вы поймете, что узел 0 находится рядом с 2, 3 и 1, вы установили

M[0][2]=1 
M[0][3]=1 
M[0][1]=1 

И поскольку матрица смежности симметрична:

M[2][0]=1 
M[3][0]=1 
M[1][0]=1 

Индексы говорят вам, к каким узлам вы обращаетесь, а значение равно 1, если узлы смежны и 0 в противном случае. Это звучит как домашнее задание, которое вы должны выяснить сами.

 Смежные вопросы

  • Нет связанных вопросов^_^