Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để đếm các cách hình thành đơn vị trinh sát

Giả sử chúng ta có một mảng A với n phần tử và một số khác d. Theo quy định của quân đội Dreamland, một đơn vị trinh sát cần có đúng hai binh sĩ. Vì hai người lính này không chênh lệch nhau nhiều nên chiều cao của họ có thể chênh lệch nhiều nhất là d cm. Có n người lính có chiều cao được lưu trong mảng A. Một số người lính có cùng chiều cao. Chúng ta phải tìm ra bao nhiêu cách tồn tại để thành lập một đơn vị trinh sát từ n người lính này.

Vì vậy, nếu đầu vào là A =[10, 20, 50, 60, 65]; d =10, thì đầu ra sẽ là 6, vì (10, 20), (20, 10), (50, 60), (60, 50), (60, 65), (65, 60) là có thể đơn vị.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

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

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
}

Đầu vào

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

Đầu ra

6