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

C++에서 K 잔을 채우는 데 필요한 최소 병 수

<시간/>

문제 설명

물이 담긴 N 개의 잔과 각각의 용량 목록이 주어집니다. 작업은 정확히 K개의 잔을 채우는 데 필요한 최소 병 수를 찾는 것입니다. 각 병의 용량은 100개입니다.

예시

N =5, K =4인 경우 용량[] ={1, 2, 3, 2, 1}.

  • 2, 3, 2 용량의 안경을 채우려면 8단위가 필요합니다.
  • 이렇게 하면 1병만 열 수 있습니다.

알고리즘

  • K 안경을 정확히 작성하려면 최소 용량의 K 안경을 가져가세요.
  • 총 필요한 병은 다음과 같이 계산할 수 있습니다. -

    (1st k 잔의 용량 합계) / (1병 용량)의 상한값.

예시

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int minBottles(int *capacity, int n, int k) {
   sort(capacity, capacity + n);
   int sum = 0;
   for (int i = 0; i < k; ++i) {
      sum += capacity[i];
   }
   return ceil((double)sum/100);
}
int main() {
   int capacity[] = {1, 2, 3, 2, 1};
   cout << "Min bottles required = " <<minBottles(capacity, 5, 4) << endl;
   return 0;
}

출력

위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다 -

Min bottles required = 1