Cho mảng, tính chênh lệch tuyệt đối giữa các phần tử liên tiếp ở chỉ số chẵn, và riêng cho chỉ số lẻ.
- Chỉ số chẵn: 0, 2, 4, ...
- Chỉ số lẻ: 1, 3, 5, ...
- Sai số tuyệt đối:
|a[i] - a[j]|
Ví dụ
arr = {1, 2, 4, 5, 8}
Chỉ số chẵn: 1, 4, 8 → |4-1|=3, |8-4|=4
Chỉ số lẻ: 2, 5 → |5-2|=3
Chương trình C++ (sửa lỗi logic code gốc)
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> arr = {1, 5, 8, 10, 15, 26};
int n = arr.size();
cout << "Mang: ";
for (int x : arr) cout << x << " ";
// Tách phần tử chỉ số chẵn/lẻ
vector<int> even_idx, odd_idx;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) even_idx.push_back(arr[i]);
else odd_idx.push_back(arr[i]);
}
// Tính sai số tuyệt đối liên tiếp
auto calcDiff = [](const vector<int>& v) {
if (v.size() < 2) return 0;
int sum = 0;
for (size_t i = 1; i < v.size(); i++)
sum += abs(v[i] - v[i-1]);
return sum;
};
cout << "\nTong sai so tuyet doi chi so chan: " << calcDiff(even_idx);
cout << "\nTong sai so tuyet doi chi so le: " << calcDiff(odd_idx);
return 0;
}
Kết quả
Mang: 1 5 8 10 15 26 Tong sai so tuyet doi chi so chan: 25 Tong sai so tuyet doi chi so le: 21