>  기사  >  백엔드 개발  >  최대 합계 연속 하위 배열을 위한 PHP 프로그램

최대 합계 연속 하위 배열을 위한 PHP 프로그램

王林
王林원래의
2024-08-28 12:05:00660검색

PHP란 무엇인가요?

PHP(Hypertext Preprocessor)는 웹 개발에 널리 사용되는 서버측 스크립팅 언어입니다. 이를 통해 개발자는 HTML 파일 내에 코드를 삽입하여 동적 웹 페이지를 생성하고 데이터베이스와 상호 작용할 수 있습니다. PHP는 단순성, 다양성 및 널리 사용되는 데이터베이스와의 광범위한 통합 기능으로 잘 알려져 있습니다. 광범위한 확장 기능을 제공하고 대규모 개발자 커뮤니티를 보유하고 있어 충분한 리소스와 지원을 보장합니다.

최대 합계 연속 하위 배열을 위한 PHP 프로그램

PHP Program for Largest Sum Contiguous Subarray

4+ (-1) +2 +1 = 6

최대 연속 합은 6입니다.

Kadane의 알고리즘 사용

Kadane의 알고리즘은 주어진 배열 내에서 인접한 하위 배열의 최대 합계를 찾는 데 사용되는 효율적인 알고리즘입니다. 1984년 Jay Kadane에 의해 개발되었습니다.

알고리즘은 배열을 반복적으로 스캔하고 max_so_far 및 max_ending_here의 두 변수를 유지하는 방식으로 작동합니다. 알고리즘의 작동 방식은 다음과 같습니다.

  • max_so_far 및 max_ending_here 변수를 배열의 첫 번째 요소로 초기화하거나 배열에 음수가 포함된 경우 최소값(예: PHP_INT_MIN)으로 초기화하세요.

  • 두 번째 요소부터 배열을 반복합니다.

  • 각 요소에 대해 현재 요소를 추가하여 max_ending_here를 업데이트하세요.

  • max_ending_here가 음수가 되면 하위 배열에 현재 요소를 포함하면 합계가 줄어들기 때문에 0으로 재설정하세요.

  • max_ending_here가 max_so_far보다 큰 경우 max_so_far를 새로운 최대 합계로 업데이트하세요.

  • 배열의 나머지 요소에 대해 3~5단계를 반복합니다.

  • 전체 배열을 반복한 후 max_so_far는 연속 하위 배열의 최대 합계를 보유합니다.

  • max_so_far를 결과로 반환합니다.

Kadane의 알고리즘은 배열을 한 번만 통과하면 되기 때문에 O(n)의 시간 복잡도를 갖습니다. 여기서 n은 배열의 크기입니다. 이는 연속된 하위 배열의 최대 합계를 찾는 효율적인 솔루션이 됩니다.

으아아아

출력

으아아아

알고리즘 패러다임 사용: 동적 프로그래밍

으아아아

출력

으아아아

시작 및 끝 인덱스를 사용한 또 다른 접근 방식

으아아아

출력

으아아아

결론

최대 합 연속 하위 배열을 찾는 PHP 프로그램은 동적 프로그래밍과 Kadane의 알고리즘을 활용합니다. 동적 프로그래밍 접근 방식은 문제를 더 작은 하위 문제로 나누고 솔루션을 배열에 저장하여 문제를 효율적으로 해결하는 데 사용됩니다.

Kadane의 알고리즘은 프로그램의 핵심 구성 요소이며 가장 큰 합계 연속 하위 배열을 찾는 역할을 담당합니다. 배열을 반복하면서 현재 요소를 추가하거나 새 하위 배열을 시작하여 현재 합계를 지속적으로 업데이트합니다. 발생한 최대 합계는 $maxSum 변수에 저장됩니다. 이 프로그램은 배열의 양수와 음수를 모두 효율적으로 처리합니다. 시작 및 끝 인덱스를 추적하여 합계가 가장 큰 하위 배열을 식별하고 array_slice를 사용하여 하위 배열을 추출할 수 있습니다.

동적 프로그래밍과 Kadane의 알고리즘을 활용하여 프로그램은 O(n)의 시간 복잡도를 달성합니다. 여기서 n은 배열의 크기입니다. 이는 PHP에서 가장 큰 연속 하위 배열 합계를 찾는 효율적인 솔루션을 보장합니다.

위 내용은 최대 합계 연속 하위 배열을 위한 PHP 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.