2 つの文字列間の最短パスを見つけようとしており、実行されたステップ数の int を返します。String[]
各文字列(キー)にその文字列の隣人をすべて含む(オブジェクト)があるHashMapがあるとします。
このコードは私が作成したものです。基本的な BFS を取得してコピーしようとしましたが、進行する方法がわかりません。
public class Main {
private static HashMap<String, String[]> list;
private static int makePath(String from, string to) {
int path = 0;
PriorityQueue<String> queue = new PriorityQueue<>();
queue.add(from);
while (!queue.isEmpty()) {
String u = queue.poll();
if (u == to) {
return path;
}
else {
for (String r : list.get(u)) {
...
}
return path;
}
}
return 0;
}
}
これは、私の HashMap がどのように見えるかの単なる例です:
Goat, adj[] {Fish, Cow, Chicken}
Cow, adj[] {Pig, Pigeon}
Fish, adj[] {Goat, Bulbasaur, Dolphin, Eagle}
魚から牛まで、2 つのステップが必要です。魚からヤギへ、ヤギから魚へ。
ですから、何かアイデアがあれば、遠慮なく共有してください :)