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

C++でCookieを割り当てる


いくつかのCookieを子供に配布しようとしているとします。ただし、各子に最大で1つのCookieを与える必要があります。これで、各子iには貪欲係数giがあります。これは、子が満足するCookieの最小サイズです。各Cookiejのサイズはsjです。 sj> =giの場合、Cookie jを子iに割り当てることができ、子iはコンテンツになります。私たちの目標は、コンテンツの子の数を最大化し、最大数を出力することです。

したがって、入力が[1,2]、[1,2,3]の場合、出力は2になり、2つの子と3つのCookieがあります。 2人の子供の貪欲係数は1、2です。これで3つのCookieがあり、それらのサイズはすべての子供を満足させるのに十分な大きさであるため、出力は2です。

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

  • 配列gを並べ替える

  • 配列を並べ替える

  • i:=0、j =0

  • while(i

    • g [i] <=s [j]の場合、-

      • (iを1増やします)

    • (jを1増やします)

  • iを返す

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int findContentChildren(vector<int>& g, vector<int>& s) {
      sort(g.begin(), g.end());
      sort(s.begin(), s.end());
      int i = 0, j = 0;
      while (i < g.size() && j < s.size()) {
         if (g[i] <= s[j])
            i++;
            j++;
         }
         return i;
      }
};
main(){
   Solution ob;
   vector<int> v = {1,2}, v1 = {1,2,3};
   cout << (ob.findContentChildren(v, v1));
}

入力

{1,2}, {1,2,3}

出力

2

  1. C++の識別子

    C ++識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義アイテムを識別するために使用される名前です。識別子は、文字AからZまたはaからzまたはアンダースコア(_)で始まり、その後に0個以上の文字、アンダースコア、および数字(0から9)が続きます。 C ++では、識別子内に@、$、%などの句読文字を使用できません。 C ++は、大文字と小文字を区別するプログラミング言語です。したがって、Manpowerとmanpowerは、C++では2つの異なる識別子です。 受け入れ可能な識別子の例を次に示します- mohd Piyush abc move_na

  2. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ