그리디 알고리즘을 사용하여 PHP에서 최소 코인 변경 문제에 대한 효율적인 솔루션을 구현하는 방법은 무엇입니까?

PHPz
풀어 주다: 2023-09-19 10:24:01
원래의
1391명이 탐색했습니다.

그리디 알고리즘을 사용하여 PHP에서 최소 코인 변경 문제에 대한 효율적인 솔루션을 구현하는 방법은 무엇입니까?

그리디 알고리즘을 사용하여 PHP에서 최소 코인 변경 문제에 대한 효율적인 솔루션을 구현하는 방법은 무엇입니까?

인용문:
일상 생활에서 우리는 종종 변화가 필요합니다. 특히 쇼핑이나 거래를 할 때 더욱 그렇습니다. 최대한 적은 코인을 사용하기 위해서는 가능한 한 적은 코인을 사용하여 거스름돈 금액을 합산해야 합니다. 컴퓨터 프로그래밍에서는 그리디 알고리즘을 사용하여 이 문제를 해결하여 효율적인 솔루션을 얻을 수 있습니다. 이 기사에서는 PHP에서 그리디 알고리즘을 사용하여 최소 코인 변경 문제에 대한 효율적인 솔루션을 구현하는 방법을 설명하고 해당 코드 예제를 제공합니다.

  1. 그리디 알고리즘의 원리
    그리디 알고리즘은 각 단계에서 현재의 최적 솔루션을 선택하여 최종적으로 전역 최적 솔루션을 얻는다는 개념입니다. 최소 코인 변경 문제에서 그리디 알고리즘의 아이디어는 목표 금액보다 작거나 같은 최대 단위의 코인을 선택하여 모든 코인을 찾을 때까지 매번 변경하는 것입니다.
  2. 최소 동전 변화 문제에 대한 해결책
    다음은 그리디 알고리즘을 사용하여 PHP의 최소 동전 변화 문제를 해결하는 단계입니다.

1단계: 두 매개변수를 허용하는 maximumCoins라는 함수를 만듭니다: amount (amount ) 및 동전 명칭 배열(동전).
2단계: 변경을 위한 동전 조합을 저장할 빈 결과 배열(결과)을 정의합니다.
3단계: 동전 액면가 배열을 내림차순으로 정렬하여 액면가가 큰 동전부터 작은 동전까지 선택합니다.
4단계: 동전 단위 배열을 탐색하고 현재 단위가 매번 목표 금액보다 작거나 같은 동전을 선택하여 변경합니다.
5단계: 변경 과정에서 목표 금액을 업데이트하고 선택한 동전 액면가를 결과 배열에 추가한 다음 목표 금액에서 선택한 동전 액면가를 뺍니다.
6단계: 목표 금액이 0이 될 때까지 4단계와 5단계를 반복합니다.
7단계: 결과 배열을 반환합니다.

다음은 특정 PHP 코드 예입니다.

function minimumCoins($amount, $coins) {
    $result = []; // 存储找零的硬币组合
    rsort($coins); // 降序排列硬币面额数组
    
    foreach ($coins as $coin) {
        while ($coin <= $amount) {
            $result[] = $coin; // 将当前硬币面额添加到结果数组中
            $amount -= $coin; // 更新目标金额
        }
    }
    
    return $result;
}

$amount = 47; // 目标金额
$coins = [25, 10, 5, 1]; // 硬币面额数组
$result = minimumCoins($amount, $coins);

echo "找零组合:";
foreach ($result as $coin) {
    echo $coin . " ";
}
로그인 후 복사

위 코드는 "변경 조합: 25 10 10 1 1"을 출력합니다. 즉, 47위안을 변경하려면 5개의 코인이 필요합니다.

  1. 시간 복잡도와 공간 복잡도
    그리디 알고리즘을 사용하여 최소 동전 변화 문제를 해결하는 시간 복잡도는 O(n)입니다. 여기서 n은 동전 단위 수입니다. 결과를 저장하는 데 일정한 추가 공간만 필요하므로 공간 복잡도는 O(1)입니다.

결론:
그리디 알고리즘을 사용하면 PHP의 최소 코인 변경 문제를 효율적으로 해결할 수 있습니다. 이 문제는 일상생활에서 매우 실용적이며 그리디 알고리즘은 간단하고 효율적인 솔루션을 제공합니다. 이 기사에 제공된 코드 예제와 솔루션 아이디어가 도움이 되기를 바랍니다.

위 내용은 그리디 알고리즘을 사용하여 PHP에서 최소 코인 변경 문제에 대한 효율적인 솔루션을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿