1462. Calendrier des cours IV
Difficulté :Moyen
Sujets : Recherche en profondeur d'abord, recherche en largeur d'abord, graphique, tri topologique
Il y a un total de numCourses cours que vous devez suivre, étiquetés de 0 à numCourses - 1. Vous recevez un tableau de prérequis où prérequis[i] = [ai, bi ] indique que vous devez suivre le cours ai d'abord si tu veux suivre le cours bi.
Les prérequis peuvent également être indirects. Si le cours a est un prérequis du cours b, et le cours b est un prérequis du cours c, alors le cours a est un prérequis du cours c.
Vous recevez également un tableau de requêtes où requêtes[j] = [uj, vj]. Pour la jème requête, vous devez répondre si le cours uj est un prérequis du cours vj ou non.
Renvoyer une réponse de tableau booléen, où réponse[j] est la réponse à la jième requête.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution:
Nous pouvons utiliser une représentation de graphique et l'algorithme de Floyd-Warshall pour calculer si chaque cours est accessible à partir d'un autre cours. Cette approche gérera efficacement les relations préalables et nous permettra de répondre directement aux requêtes.
implémentons cette solution dans PHP: 1462. Calendrier de cours 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] ?>
Initialisation du graphique:
Prérequis directs:
algorithme de Floyd-Warshall:
Évaluation de la requête:
$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]
Contact Links
Si vous avez trouvé cette série utile, veuillez envisager de donner le dépositaire une étoile sur GitHub ou de partager le message sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi!
Si vous voulez un contenu plus utile comme celui-ci, n'hésitez pas à me suivre:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!