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

C++でチーム数を数える


n人の兵士が並んでいると仮定します。ここでは、各兵士に一意の評価値が割り当てられています。次のルールを使用して、3人の兵士のチームを作成する必要があります-

レーティング(rating [i]、rating [j]、rating [k])となるように、インデックス(i、j、k)を持つ兵士を3人選択します。

チームは、−(rating [i] rating [j]>rating [k])の場合に有効になります。

形成できるチームの数を見つける必要があります。 (兵士は複数のチームに参加できます)。

したがって、入力がrating =[2,5,3,4,1]のようである場合、(2,3,4)、(5,4,1)のような3つのチームを形成できるため、出力は3になります。 、(5,3,1)。

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

  • ret:=0、n:=vのサイズ

  • 初期化i:=0の場合、i

    • 初期化j:=i + 1の場合、j

      • 初期化k:=j + 1の場合、k

        • v [i]

          • (retを1増やします)

        • それ以外の場合、v [i]>v[j]およびv[j]>v [k]の場合、-

          • (retを1増やします)

  • retを返す

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int numTeams(vector<int>& v) {
      int ret = 0;
      int n = v.size();
      for (int i = 0; i < n; i++) {
         for (int j = i + 1; j < n; j++) {
            for (int k = j + 1; k < n; k++) {
               if (v[i] < v[j] && v[j] < v[k])
                  ret++;
               else if (v[i] > v[j] && v[j] > v[k])
                  ret++;
            }
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,5,3,4,1};
   cout << (ob.numTeams(v));
}

入力

{2,5,3,4,1}

出力

3

  1. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと

  2. C++で長方形の正方形の数を数える

    =Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の​​1、2X2の4、1