Cho mảng N phần tử. Đếm cặp (i,j) với i Ví dụ 1: Ví dụ 2: → Bài toán thực chất: Đếm cặp chỉ số (i
Ví dụ minh họa
Mã nguồn C++
#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n) {
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int sum = arr[i] + arr[j];
if (sum % 2 == 0 && i + j < 120) {
if (arr[i] == arr[j]) {
count++;
cout << endl << " a:" << arr[i] << " b:" << arr[j];
}
}
}
}
return count;
}
int main() {
int arr[] = {1, 2, 3, 2, 4, 1, 4};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Valid pairs in array: " << countPairs(arr, n);
return 0;
}
Kết quả chạy chương trình
Valid pairs in array:
a:1 b: 1
a:2 b: 2
a:4 b: 4
3Phân tích điều kiện
Tối ưu hóa O(n) - Nhóm theo giá trị
#include <bits/stdc++.h>
using namespace std;
int countPairsOptimized(int arr[], int n) {
unordered_mapĐộ phức tạp
Phương pháp Thời gian Không gian Vét cạn O(n²) O(1) Nhóm chỉ số theo giá trị O(n + Σm²) O(n)