C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でキャンディーを配布する


同じ長さの配列があるとします。ここでは、この配列のさまざまな数字がさまざまな種類のキャンディーを表します。これで、各番号は対応する種類のキャンディー1つを意味します。キャンディーの数を兄と妹に均等に分配する必要があります。妹が受け取ることができるキャンディーの最大数を見つける必要があります。

したがって、入力が[1,1,2,3]の場合、姉妹がキャンディー[2,3]を持ち、兄弟がキャンディー[1,1]を持っていると見なすかのように、出力は2になります。現在、姉妹には2種類のキャンディーがあり、兄弟には1種類のキャンディーしかありません。

これを解決するには、次の手順に従います-

  • 1つのセットを定義する

  • 初期化i:=0の場合、i <キャンディーのサイズの場合、更新(iを1増やします)、実行-

    • キャンディー[i]をsに挿入

  • 最小サイズのsとキャンディーのサイズ/2を返す

理解を深めるために、次の実装を見てみましょう-

#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));
}

入力

{1,1,2,3}

出力

2

  1. C++のn-aryツリーの偶数サイズのサブツリー

    この問題では、n-aryツリーを示す隣接リストが与えられます。私たちのタスクは、n-aryツリー内の偶数サイズのサブツリーの数を見つけることです。 N-aryツリー は、通常、次のように階層的に表されるノードのコレクションとして定義されます。 ツリーはルートノードで開始されます。 ツリーの各ノードは、その子ノードへのポインタのリストを維持します。 子ノードの数がm以下です。 問題を理解するために例を見てみましょう 入力: 出力: 4 説明: 7をルートとするツリーのサイズは同じです。 2をルートとするツリーのサイズは同じです。 0をルートとする

  2. Pythonでキャンディーを人々に配布する

    次のように、いくつかのキャンディーをn人の列に配布したいとします- 次に、最初の人に1つのキャンディーを、2番目の人に2つのキャンディーを、というように、最後の人にn個のキャンディーを与えるまで続けます。 その後、再び列の最初に戻り、最初の人にn + 1個のキャンディー、2番目の人にn + 2個のキャンディーを与え、最後の人に2*n個のキャンディーを与えるまで続けます。 。 キャンディーがなくなるまで、このプロセスを繰り返します。最後の人は残りのキャンディーをすべて受け取ります(必ずしも前のギフトより1つ多いとは限りません)。 キャンディーの最終的な分布を表す配列を返す必要があります。