โจทย์: หน่วยลาดตระเวนต้องมี 2 ทหาร ความสูงต่างกันไม่เกิน d ซม. มีทหาร n คน ความสูงใน A หาจำนวนวิธีจัดหน่วย (ลำดับสำคัญ: (A,B) และ (B,A) นับต่างกัน)
Input: A=[10,20,50,60,65], d=10 → Output: 6 (คู่: (10,20),(20,10),(50,60),(60,50),(60,65),(65,60))
ขั้นตอนแก้
ans := 0
for i := 1 to n-1:
for j := 0 to i-1:
if |A[i]-A[j]| <= d: ans++
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;
}Input
{10,20,50,60,65}, 10Output
6