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

정찰 단위를 구성하는 방법을 계산하는 C++ 코드

<시간/>

n개의 요소가 있는 배열 A와 다른 숫자 d가 있다고 가정합니다. 드림랜드 군대 규정에 따르면 정찰부대는 정확히 2명의 병사를 보유해야 한다. 이 두 병사는 크게 다르지 않기 때문에 키가 최대 d센티미터 차이가 날 수 있습니다. 배열 A에 키가 저장된 n명의 병사가 있습니다. 일부 병사는 키가 같습니다. 이 n명의 병사로 정찰 부대를 구성하는 방법이 몇 가지나 존재하는지 찾아야 합니다.

따라서 입력이 A =[10, 20, 50, 60, 65]와 같은 경우; d =10이면 출력은 6이 됩니다. 왜냐하면 (10, 20), (20, 10), (50, 60), (60, 50), (60, 65), (65, 60)이 가능하기 때문입니다. 단위.

단계

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

ans := 0
for initialize i := 1, when i < size of A, update (increase i by 1), do:
   for initialize j := 0, when j < i, update (increase j by 1), do:
      if |A[i] - A[j]| <= d, then:
         (increase ans by 1)
      return ans * 2

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int d){
   int ans = 0;
   for (int i = 1; i < A.size(); i++)
      for (int j = 0; j < i; j++)
         if (abs(A[i] - A[j]) <= d)
            ans++;
   return ans * 2;
}
int main(){
   vector<int> A = { 10, 20, 50, 60, 65 };
   int d = 10;
   cout << solve(A, d) << endl;
}

입력

{ 10, 20, 50, 60, 65 }, 10

출력

6