>백엔드 개발 >C++ >C에서는 2단계로 인출할 수 있는 최대 금액

C에서는 2단계로 인출할 수 있는 최대 금액

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB앞으로
2023-09-22 08:05:171422검색

C에서는 2단계로 인출할 수 있는 최대 금액

L1과 L2라는 두 개의 사물함이 있고 그 안에 동전이 들어있습니다. L1에는 A 코인이 있고 L2에는 B 코인이 있습니다. 인출 금액을 최대화하려면 사물함에서 동전을 제거해야 합니다. 보관함에서 동전을 꺼낼 때마다 이전 금액에서 1코인을 뺀 금액으로 교체됩니다. L1에서 A 코인을 가져오면 A-1 코인으로 대체되고, L2에서 B 코인을 가져오면 B-1 코인으로 대체됩니다. 임무는 두 단계를 거쳐 인출 금액을 최대화하는 것입니다. 이는 코인을 두 번만 인출할 수 있음을 의미합니다.

Input - L1 - 10, L2 - 11

Output - 두 단계로 꺼낼 수 있는 최대량 - 21

설명 - 첫 번째 단계에서는 L2 코인에서 11개를 꺼냅니다. L2는 11-1=10코인으로 대체됩니다.

두 번째 단계에서는 L1과 L2 모두 10개의 코인이 있으므로 어느 쪽에서든 가져올 수 있으며 최대 11+10=21개의 코인이 있습니다.

Input - L1-5, L2-5

Output - 2단계로 출금할 수 있는 최대 금액 - 10

설명 - 첫 번째 단계에서는 L1 코인에서 5개, L1에서 출금합니다. 5-1=4 코인으로 대체됩니다.

두 번째 단계에서는 L1에는 4개의 코인이 있고 L2에는 5개의 코인이 있으므로 L2에서 5개의 코인을 가져와 5+5=10개의 코인이 최대치입니다.

다음 프로그램에서 사용하는 방법은 다음과 같습니다

  • 두 개의 정수 보관함 L1과 L2가 있으며 여기에는 동전이 들어 있습니다.

  • maxMoney(int A, int B) 함수는 보관함에 있는 동전 수를 입력으로 받습니다.

  • maxMoney() 함수에서는 'money' 변수를 사용하여 최대 금액을 저장합니다.

  • 처음에 돈의 가치는 A나 B 중 큰 것에서 나옵니다. (money=A>B?A:B)

  • 돈의 가치를 A 또는 B와 비교하여 어떤 용기의 동전이 제거되었는지 확인하세요.

  • 이제 용기를 이전 금액에서 1코인을 뺀 금액으로 교체하세요. (A-- 또는 B--)

  • A 또는 B 중 더 큰 값에 다시 돈의 가치를 더합니다. (money+=A>B?A:B)

    k가 작으면 가장 작은 k 요소의 합이 가장 작습니다. -
  • Storage abs((전체 배열의 합) - (가장 작은 k 요소의 합) ) in D1 합계의 두 배)) 배열 합계에도 이러한 요소가 포함되어 있기 때문입니다.

    k가 더 크면 가장 큰 k 요소의 합이 가장 큽니다. -

  • ABS를 D2에 저장합니다((전체 배열의 합) - (가장 큰 k 요소의 합의 2배)가 2배이기 때문입니다. 배열 sum에도 이러한 요소가 포함되어 있습니다.

  • D1과 D2를 비교하여 최대값을 maxD에 저장합니다.

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

Example

Live Demo

Code:
#include <stdio.h>
#include <math.h>
// Function to return the maximum coins we can get
int maxMoney(int A, int B){
   //take coins
   int money=A>B?A:B;
   //refill the lockers with 1 less no.of coins
   if(money==A)
      A--;
   else
      B--;
   //withdraw again
   money+=A>B?A:B;
   return money;
}
// Driver code
int main(){
   int L1 = 8, L2 = 9;
   printf("Maximum money that can be withdrawn in two steps: %d" , maxMoney(L1, L2));
   return 0;
}

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다. −

Maximum money that can be withdrawn in two steps: 17

위 내용은 C에서는 2단계로 인출할 수 있는 최대 금액의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:C/C++ 포인터 퍼즐?다음 기사:C/C++ 포인터 퍼즐?