1462年。コーススケジュール IV
難易度: 中
トピック: 深さ優先検索、幅優先検索、グラフ、トポロジカルソート
受講する必要があるコースは合計 numCourses あり、0 から numCourses - 1 までのラベルが付けられています。prerequisites[i] = [ai, bi という配列の前提条件が与えられます。 ] は、コースを受講する必要があることを示しますコースを受講したい場合は、まず ai bi.
前提条件は間接的にすることもできます。コース a がコース b の前提条件であり、コース b がコース c の前提条件である場合、コース a はコース c の前提条件となります。
queries[j] = [uj, vj] である配列クエリも与えられます。 j番目のクエリについては、コース uj がコース vj の前提条件であるかどうかを答える必要があります。
ブール配列の回答を返します。ここで、answer[j] は j 番目 クエリ に対する回答です。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
グラフ表現とフロイド・ウォーシャルアルゴリズムを使用して、各コースが別のコースから到達可能かどうかを計算できます。このアプローチにより、前提条件となる関係が効率的に処理され、クエリに直接答えることができるようになります。
このソリューションを PHP で実装してみましょう: 1462。コーススケジュール IV
<?php /** * @param Integer $numCourses * @param Integer[][] $prerequisites * @param Integer[][] $queries * @return Boolean[] */ function checkIfPrerequisite($numCourses, $prerequisites, $queries) { ... ... ... /** * go to ./solution.php */ } // Example usage: $numCourses = 2; $prerequisites = [[1,0]]; $queries = [[0,1],[1,0]]; $result = checkIfPrerequisite($numCourses, $prerequisites, $queries); print_r($result); // Output: [false,true] $numCourses = 2; $prerequisites = []; $queries = [[1,0],[0,1]] $result = checkIfPrerequisite($numCourses, $prerequisites, $queries); print_r($result); // Output: [false,false] $numCourses = 3; $prerequisites = [[1, 2], [1, 0], [2, 0]]; $queries = [[1, 0], [1, 2]]; $result = checkIfPrerequisite($numCourses, $prerequisites, $queries); print_r($result); // Output: [true, true] ?>
グラフの初期化:
直接の前提条件:
フロイド・ウォーシャルアルゴリズム:
クエリ評価:
$numCourses = 3; $prerequisites = [[1, 2], [1, 0], [2, 0]]; $queries = [[1, 0], [1, 2]];
$isReachable = [ [false, false, false], [false, false, true], [false, false, false] ];
$isReachable = [ [false, false, false], [true, false, true], [true, false, false] ];
[true, true]
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がコーススケジュールIVの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。