Computer >> Máy Tính >  >> Lập trình >> C ++

Phân phối kẹo trong C ++


Giả sử chúng ta có một mảng có độ dài chẵn, ở đây các số khác nhau trong mảng này sẽ đại diện cho các loại kẹo khác nhau. Bây giờ mỗi số có nghĩa là một viên kẹo của loại tương ứng. chúng ta phải chia đều số kẹo cho anh chị em. Chúng ta phải tìm số loại kẹo tối đa mà em gái có thể nhận được.

Vì vậy, nếu đầu vào là [1,1,2,3], thì đầu ra sẽ là 2 như thể chúng ta coi chị gái có kẹo [2,3] và anh trai có kẹo [1,1]. Bây giờ em gái có hai loại kẹo khác nhau, anh trai chỉ có một loại kẹo.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một bộ s

  • để khởi tạo i:=0, khi tôi

    • nhét kẹo [i] vào s

  • trả về kích thước tối thiểu là s và kích thước kẹo / 2

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int distributeCandies(vector<int>& candies){
      unordered_set<int> s;
      for (int i = 0; i < candies.size(); i++)
         s.insert(candies[i]);
      return min(s.size(), candies.size() / 2);
   }
};
main(){
   Solution ob;
   vector<int> v = {1,1,2,3};
   cout << (ob.distributeCandies(v));
}

Đầu vào

{1,1,2,3}

Đầu ra

2