Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C++ เพื่อนับวิธีสร้างหน่วยลาดตระเวน


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n และอีกจำนวนหนึ่งคือ d ตามระเบียบของกองทัพดรีมแลนด์ หน่วยลาดตระเวนควรมีทหารสองคนพอดี เนื่องจากทหารสองคนนี้ไม่ควรต่างกันมาก ความสูงจึงต่างกันได้ไม่เกิน d เซนติเมตร มีทหาร n นายที่เก็บความสูงไว้ในอาร์เรย์ A ทหารบางนายมีความสูงเท่ากัน เราต้องค้นหาวิธีการที่จะสร้างหน่วยลาดตระเวนจากทหารทั้ง 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