PHP 란 무엇입니까?
PHP (HyperText Preprocessor)는 웹 개발에 널리 사용되는 서버 측 스크립팅 언어입니다. 이를 통해 개발자는 HTML 파일 내에 코드를 포함시켜 동적 웹 페이지를 생성하고 데이터베이스와의 상호 작용을 가능하게합니다. PHP는 인기있는 데이터베이스와의 단순성, 다양성 및 광범위한 통합 기능으로 유명합니다. 광범위한 확장을 제공하며 많은 개발자 커뮤니티가있어 충분한 자원과 지원을 보장합니다.
가장 큰 합
4 (-1) 2 1 = 6
최대 연속 합계는 = 6입니다
Kadane의 알고리즘 사용
Kadane의 알고리즘은 주어진 배열 내에서 연속 서브 어레이의 최대 합을 찾는 데 사용되는 효율적인 알고리즘입니다. 1984 년 Jay Kadane에 의해 개발되었습니다.
알고리즘은 배열을 반복적으로 스캔하고 MAX_SO_FAR 및 MAX_ENDION_HERE의 두 가지 변수를 유지하여 작동합니다. 알고리즘의 작동 방식은 다음과 같습니다.
- max_so_far 및 max_ending_here 변수를 배열의 첫 번째 요소 또는 배열에 음수가 포함 된 경우 최소 값 (예 : php_int_min)으로 초기화합니다.
- 두 번째 요소에서 배열을 통해 반복합니다.
- 각 요소에 대해 현재 요소를 추가하여 max_ending_here를 업데이트하십시오.
- max_ending_here가 음수가되면 서브 어레이에 현재 요소를 포함 시키면 합이 줄어 듭니다.
- max_ending_here가 max_so_far보다 큰 경우, 새로운 최대 합계로 max_so_far를 업데이트하십시오.
- 배열의 나머지 요소에 대해 3 ~ 5 단계를 반복하십시오.
- 전체 배열을 반복 한 후 max_so_far는 연속 서브 어레이의 최대 합을 유지합니다.
- 결과적으로 max_so_far를 반환합니다.
Kadane의 알고리즘은 O (n)의 시간 복잡성을 가지고 있으며, 여기서 N은 배열의 크기이며 배열을 통한 단일 패스 만 필요하므로 배열의 크기입니다. 이를 통해 최대 합의 연속 서브 어레이를 찾기위한 효율적인 솔루션이됩니다.
예
php
// PHP 프로그램을 인쇄하는 프로그램
// 인접 배열 합계
함수 maxsubarraysum ($ a, $ size)
{
$ max_so_far = php_int_min;
$ max_ending_here = 0;
for ($ i = 0; $ i
산출
최대 연속 합계는 6입니다
알고리즘 패러다임 사용 : 동적 프로그래밍
예
php
함수 maxsubarraysum ($ a, $ size)
{
$ max_so_far = $ a [0];
$ curr_max = $ a [0];
for ($ i = 1; $ i
산출
최대 연속 합계는 6입니다
시작 및 끝 인덱스가있는 또 다른 접근 방식
예
php
// PHP 프로그램을 인쇄하는 프로그램
// 인접 배열 합계
함수 maxsubarraysum ($ a, $ size)
{
$ max_so_far = php_int_min;
$ max_ending_here = 0;
$ start = 0;
$ end = 0;
$ s = 0;
for ($ i = 0; $ i ";
echo "Starting index ". $start . "
".
"Ending index " . $end . "
";
}
// Driver Code
$a = array(-2, 1, -3, 4, -1, 2, 1, -5, 4);
$n = sizeof($a);
$max_sum = maxSubArraySum($a, $n);
?>
산출
최대 연속 합계는 6입니다
시작 색인 3
결말 색인 6
결론
가장 큰 합계 서브 어레이를 찾기위한 PHP 프로그램은 동적 프로그래밍과 Kadane의 알고리즘을 사용합니다. 동적 프로그래밍 방식은 문제를 더 작은 하위 문제로 분류하고 솔루션을 배열에 저장하여 문제를 효율적으로 해결하기 위해 사용됩니다.
Kadane의 알고리즘은이 프로그램의 핵심 구성 요소이며 가장 큰 합계 서브 어레이를 찾는 책임이 있습니다. 배열을 반복하여 현재 요소를 추가하거나 새 서브 어레이를 시작하여 현재 합계를 지속적으로 업데이트합니다. 발생하는 최대 합계는
$ maxsum 변수에 저장됩니다. 이 프로그램은 배열에서 양수와 음수를 효율적으로 처리합니다. 시작 및 끝 인덱스를 추적하여 가장 큰 합계로 서브 어레이를 식별하여 Array_Slice를 사용하여 서브 어레이를 추출 할 수 있습니다.
동적 프로그래밍과 Kadane의 알고리즘을 사용하여 프로그램은 O (n)의 시간 복잡성을 달성합니다. 여기서 n은 배열의 크기입니다. 이를 통해 PHP에서 가장 큰 합계 서브 어레이 어레이를 찾기위한 효율적인 솔루션을 보장합니다.