Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 팀 수 계산

<시간/>

n명의 군인이 일렬로 서 있다고 가정합니다. 여기에서 각 병사는 고유한 등급 값을 할당받습니다. 다음 규칙을 사용하여 3명의 병사로 구성된 팀을 만들어야 합니다. -

등급(등급[i], 등급[j], 등급[k])이 되도록 지수(i, j, k)가 있는 병사 3명을 선택합니다.

팀은 - (rating[i] Rating[j]> Rating[k])인 경우 유효합니다.

우리는 우리가 구성할 수 있는 팀의 수를 찾아야 합니다. (병사들은 여러 팀에 속할 수 있습니다.)

따라서 입력이 Rating =[2,5,3,4,1]과 같으면 출력은 3이 됩니다. (2,3,4), (5,4,1)과 같은 세 개의 팀을 구성할 수 있기 때문입니다. , (5,3,1).

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • ret :=0, n :=v의 크기

  • initialize 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 증가)

  • 리턴 렛

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#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