У меня есть массив узлов, которые связаны друг с другом
У меня есть сеть узлов ниже.Здесь 0 - отправная точка, я хочу проехать как можно больше узлов, причем узел путешествовал только один раз.Также во время поездки от 0 до узла назначения я хочу иметь только один нечетный узел (например, 1, 3, 5, 7).Теперь мне нужно найти самый длинный маршрут, который я могу пройти из моей начальной позиции 0.
Пример:
int[] array = { 0, 9, 0, 2, 6, 8, 0, 8, 3, 0 };
На приведенном выше графике ниже представлены возможности:
0 -> 6 -> 4 (valid path, length = 3 nodes)
0 -> 9 -> 1 (Not valid path, length as we have 2 odd numbers here 1 & 9)
0 -> 2 -> 3 -> 8 (valid path, length = 4 nodes)
0 -> 2 -> 3 -> 8 -> 5 (Not valid path as we have 2 odd numbers here 3 & 5)
0 -> 2 -> 3 -> 8 -> 7 (Not valid path as we have 2 odd numbers here 3 & 7)
So the answer is 4 for this input.
Ниже приводится программа, которую я пробую.
public int process(int[] array) {
int count = array.length;
ArrayList<Integer>[] branches = new ArrayList[count];
for (int i = 0; i < count; i++) {
branches[i] = new ArrayList<>();
}
int begin = 0;
for (int i = 0; i < count; i++) {
if (array[i] != i) {
branches[i].add(array[i]);
branches[array[i]].add(i);
}
}
Arrays.stream(branches).forEach(System.out::println);
Queue<Network> networkQueue = new LinkedList<Network>();
ArrayList<Integer> networkList = branches[begin];
networkList.forEach(value -> {
Network net = new Network(0, value);
networkQueue.add(net);
});
System.out.println("printing starting nodes.......");
List<Network> nodes = new ArrayList<>();
for (Network n : networkQueue) {
nodes.add(n);
System.out.println(n.value + " : " + n.road);
}
int result = 0;
return result;
}
class Network {
int road, value;
public Network(int road, int value) {
this.road = road;
this.value= value;
}
}
Программа печатает ветви и узлы для начальной точки, т. Е. 0:
[2, 6, 9]
[9]
[0, 3]
[2, 8]
[6]
[8]
[4, 0]
[8]
[5, 7, 3]
[1, 0]
printing starting nodes.......
2 : 0
6 : 0
9 : 0
Я застрял в поиске самого длинного маршрута, как продолжить эту программу, пожалуйста, помогите мне здесь.