Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 금액으로 합산되는 통화 메모 및 값의 최소 수 찾기

<시간/>

우리가 그러한 금액을 가지고 있고 주어진 금액으로 합산되는 다른 교단의 최소 지폐 수를 찾아야 한다고 가정합니다. 가장 높은 금액의 지폐부터 시작하여 주어진 금액에 대해 가능한 한 많은 지폐를 찾으십시오. 여기서 {2000, 500, 200, 100, 50, 20, 10, 5, 2, 1}의 무한한 양이 있다고 가정합니다. 따라서 금액이 800이라고 하면 메모는 500, 200, 100이 됩니다.

여기서 우리는 이 문제를 해결하기 위해 탐욕스러운 접근 방식을 사용할 것입니다.

예시

#include<iostream>
using namespace std;
void countNotes(int amount) {
   int notes[10] = { 2000, 500, 200, 100, 50, 20, 10, 5, 2, 1 };
   int noteFreq[10] = { 0 };
   for (int i = 0; i < 10; i++) {
      if (amount >= notes[i]) {
         noteFreq[i] = amount / notes[i];
         amount = amount - noteFreq[i] * notes[i];
      }
   }
   cout << "Note count:" << endl;
   for (int i = 0; i < 9; i++) {
      if (noteFreq[i] != 0) {
         cout << notes[i] << " : " << noteFreq[i] << endl;
      }
   }
}
int main() {
   int amount = 1072;
   cout << "Total amount is: " << amount << endl;
   countNotes(amount);
}

출력

Total amount is: 1072
Note count:
500 : 2
50 : 1
20 : 1
2 : 1