983. 티켓 최소 비용
난이도:중
주제: 배열, 동적 프로그래밍
당신은 1년 전에 기차 여행을 계획했습니다. 일년 중 여행할 날짜는 정수 배열 날짜로 제공됩니다. 각 일은 1부터 365까지의 정수입니다.
기차표는 세 가지 방법으로 판매됩니다.
패스를 사용하면 해당 날짜만큼 연속 여행할 수 있습니다.
주어진 날짜 목록에서 매일 여행하는 데 필요한 최소 달러를 반환합니다.
예 1:
예 2:
제약조건:
해결책:
문제는 연중 특정 날짜에 여행하는 데 필요한 최소 비용을 결정하는 것입니다. 문제는 1일권, 7일권, 30일권의 세 가지 유형의 여행 패스를 제공하며 각각 특정 비용이 적용됩니다. 목표는 이 패스를 사용하여 모든 여행 기간을 충당할 수 있는 가장 저렴한 방법을 찾는 것입니다. 이 작업을 수행하려면 동적 프로그래밍을 사용하여 최소 비용을 효율적으로 계산해야 합니다.
이 솔루션을 PHP로 구현해 보겠습니다: 983. 티켓 최소 비용
<?php /** * @param Integer[] $days * @param Integer[] $costs * @return Integer */ function mincostTickets($days, $costs) { ... ... ... /** * go to ./solution.php */ } // Example usage: $days1 = [1, 4, 6, 7, 8, 20]; $costs1 = [2, 7, 15]; echo mincostTickets($days1, $costs1); // Output: 11 $days2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 31]; $costs2 = [2, 7, 15]; echo mincostTickets($days2, $costs2); // Output: 17 ?> <h3> 설명: </h3> <ul> <li>알고리즘은 1년 중 매일(365일) 반복됩니다.</li> <li>각 여행일에 대해 다음 중 어느 것이 더 저렴한지 고려하여 비용을 계산합니다. <ul> <li>1일권을 구매하세요(전날 가격에 1일권 가격을 더함).</li> <li>7일 패스를 구매하세요(7일 패스 비용을 추가하고 지난 7일 동안의 여행 비용을 고려).</li> <li>30일 패스를 구매하세요(30일 패스 비용을 더하고 지난 30일 동안의 여행 비용을 고려함).</li> </ul> </li> <li>여행일이 아닌 경우 비용은 전날과 동일합니다.</li> </ul> <h3> 예제 연습 </h3> <h4> 예시 1: </h4> <p><strong>입력:</strong><br> </p> <pre class="brush:php;toolbar:false">$days = [1, 4, 6, 7, 8, 20]; $costs = [2, 7, 15];
총 비용 = $2 $7 $2 = $11.
입력:
$days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 31]; $costs = [2, 7, 15];
총 비용 = $15 $2 = $17.
해당 솔루션의 시간 복잡도는 O(365)이며, 연중 내내 반복하고 있으며 매일 일정한 시간 작업(여행 날짜 확인 및 DP 업데이트)을 수행합니다. 정렬). 따라서 솔루션은 일수에 비례하여 선형 시간으로 실행됩니다.
$days = [1, 4, 6, 7, 8, 20]; $costs = [2, 7, 15]; echo mincostTickets($days, $costs); // Output: 11
$days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 31]; $costs = [2, 7, 15]; echo mincostTickets($days, $costs); // Output: 17
동적 프로그래밍을 사용하여 여행 일수에 필요한 최소 비용을 효율적으로 계산하는 솔루션입니다. 며칠 동안 반복하고 가능한 모든 패스(1일, 7일, 30일)를 고려하여 알고리즘은 패스 구매를 위한 최적의 전략을 찾습니다. 시간 복잡도는 일수 기준으로 선형이므로 문제 제약 조건에 적합합니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.
위 내용은 . 티켓 최소 비용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!