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

グループの数を見つけるためのC++プログラムは、プログラマーのセットから形成できます。


n個の要素を持つ配列Aがあるとします。 A [i]は、i番目の学生のプログラミングスキルを表します。 Aのすべての要素は異なります。 -

のように、チームに分割したいと思います。
  • | A [i] --A[j]|のような2人の生徒iとjはいない=1は同じチームに属しています

  • チームの数は可能な限り最小限です。

したがって、入力がA =[2、3、4、99、100]の場合、グループは[2、3、4]と[99、100]

であるため、出力は2になります。

ステップ

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

dem := 1
sort the array A
for initialize i := 1, when i < size of A, update (increase i by 1), do:
   if A[i] - A[i - 1] is same as 1, then:
      dem := 2
   return dem

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

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
   int dem = 1;
   sort(A.begin(), A.end());
   for (int i = 1; i < A.size(); i++)
      if (A[i] - A[i - 1] == 1)
         dem = 2;
   return dem;
}
int main() {
   vector<int> A = { 2, 3, 4, 99, 100 };
   cout << solve(A) << endl;
}

入力

{ 2, 3, 4, 99, 100 }

出力

2

  1. C++で特定の数の数字を使用して形成できる最大数を見つけます

    n桁の数字があるとします。その数のすべての桁を使用して取得できる最大数を見つける必要があります。したがって、番号が339625の場合、最大数は965332になります。 この問題から、数字を昇順ではなく簡単に並べ替えてから印刷できることがわかります。しかし、より効率的な方法でこれを解決できます。サイズ10の配列を1つ作成して各桁の頻度を格納し、それに応じて9から0までの数値を出力できます。 例 #include <iostream> #include <string> using namespace std; int maxNumFromNum(int num) { &

  2. C ++の価数を使用して、3つの原子から分子を形成できるかどうかを調べます。

    私たちが知っているように、バランス数は、原子が他の原子とどのように多くの結合を形成しなければならないかを定義する数です。 3つの原子の原子価があります。彼らが1つの分子を作ることができるかどうかをチェックする必要があります。原子は互いに多重結合を形成することができます。したがって、バランス番号が2、4、2の場合、出力はYESになります。絆は以下のようになっているので- 1 – 2、1 – 2、2 – 3、2 –3。 バランス番号がa、b、cであると仮定します。 cが最大であると考えてください。次に、分子を形成できない2つのケースがあります- a + b+cは奇数です。すべての結合により