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

C++에서 재료 낭비가 없는 버거의 수

<시간/>

두 개의 정수 토마토 슬라이스와 치즈 슬라이스가 있다고 가정합니다. 다양한 버거의 재료입니다 −

  • 점보 버거:토마토 조각 4개와 치즈 조각 1개.
  • 스몰 버거:토마토 2개와 치즈 1개.

[total_jumbo, total_small]을 찾아야 남은 토마토 슬라이스의 수가 0이 되고 남은 치즈 슬라이스의 수도 0이 됩니다. 나머지 토마토 슬라이스와 치즈 슬라이스를 0으로 만드는 것이 불가능하면 반환 []. 따라서 입력이matoSlices =16이고 chesseSlices =7이면 출력은 [1, 6]이 됩니다. 따라서 이것은 점보 버거 1개와 작은 버거 6개를 만들기 위해 4*1 + 2*6 =16개의 토마토 조각과 1 + 6 =7개의 치즈 조각이 필요함을 나타냅니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 다음으로 불리는 하나의 배열을 만듭니다.
  • 토마토가 홀수이거나 치즈인 경우> 토마토/2 또는 토마토> 4*치즈인 경우 다음을 반환합니다.
  • x :=(4 * 치즈 - 토마토) / 2
  • y :=(토마토 – (2*x)) / 4
  • y를 삽입한 다음 x를 배열 ans에 삽입
  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector<int> numOfBurgers(int t, int c) {
      vector <int> ans;
      if(t % 2 != 0 || c > t/2 || t > c*4)return ans;
      int x = (4 * c - t) / 2;
      int y = ( t - (2 * x) )/ 4;
      ans.push_back(y);
      ans.push_back(x);
      return ans;
   }
};
main(){
   Solution ob;
   print_vector(ob.numOfBurgers(16,7));
}

입력

16
7

출력

[1, 6, ]