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

โค้ด C++ นับวิธีจัดหน่วยลาดตระเวน

โจทย์: หน่วยลาดตระเวนต้องมี 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}, 10

Output

6