난이도 :
중간 주제 : 깊이 우선 검색, 폭이 넓은 첫 번째 검색, 그래프, 토폴로지 정렬
전제 조건은 또한 간접 가 될 수 있습니다. 코스 A가 물론 B의 전제 조건이고 코스 B는 물론 C의 전제 조건이면 코스 A는 물론 C.
의 전제 조건입니다.j , v ]가있는 배열 쿼리가 제공됩니다. j th 쿼리의 경우, 코스 u j 가 물론 v j 의 전제 조건인지 아닌지에 대한 답변을해야합니다. return 부울 배열 답변, 여기서 답변 [j]는 j th
쿼리 . 예 1 :입력 : numcourses = 2, 전제 조건 = [[1,0]], queries = [[0,1], [1,0]]
출력 :[false, true] <:> 설명 : 쌍 [1, 0]은 코스 0을 수강하기 전에 코스 1을 가져와야한다는 것을 나타냅니다. 코스 0은 물론 1의 전제 조건이 아니지만 그 반대는 사실입니다. 예제 2 : 입력 : numcourses = 2, 전제 조건 = [], queries = [[1,0], [0,1]] 출력 : [false, false]
<:> 설명 :전제 조건이없고 각 과정은 독립적입니다. 예 3 :
입력 : numcourses = 3, 전제 조건 = [[1,2], [1,0], [2,0]], 쿼리 = [[1,0], [1,2]]
출력 :[true, true] 제약 조건 :
, b i ]은 독특합니다
해결책:
그래프 표현과 Floyd-Warshall 알고리즘을 사용하여 각 코스가 다른 코스에서 접근 가능한지 여부를 계산할 수 있습니다. 이 접근 방식을 사용하면 전제 조건 관계를 효율적으로 처리하고 쿼리에 직접 답변할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!