ที่นี่เราจะดูวิธีหาความต่างสัมบูรณ์ของสมาชิกที่อยู่ในดัชนีคู่และคี่ในอาร์เรย์ ความต่างสัมบูรณ์หมายถึงถ้าผลต่างเป็นลบ จะนำค่าสัมบูรณ์มาใช้ ตัวอย่างเช่น อาร์เรย์ {1, 2, 3, 4, 5, 6, 7, 8, 9} สมาชิกดัชนีคู่ (เริ่มจาก 0) คือ 1, 3, 5, 7, 9 และดัชนีคี่คือ 2, 4, 6, 8 ความต่างของดัชนีคู่คือ |1-3|=2, |2-5|=3, |3-7|=4, |4-9|=5 ส่วนดัชนีคี่ก็จะได้ 4
อัลกอริทึม
offEvenDiff(arr, n)
เริ่มต้น even := 0, odd := 0
สำหรับ i := 0 ถึง n-1 ทำ
ถ้า i เป็นเลขคู่ แล้ว
even := |even - arr[i]|
มิฉะนั้น
odd := |odd - arr[i]|
จบลูป
คืนค่า (odd, even)
สิ้นสุด
ตัวอย่างโค้ด
#include <iostream>
#include <cmath>
using namespace std;
void oddEvenDiff(int arr[], int n, int &o, int &e) {
int even = 0;
int odd = 0;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
even = abs(even - arr[i]); // หาความต่างสัมบูรณ์ของดัชนีคู่
} else {
odd = abs(odd - arr[i]);
}
}
e = even;
o = odd;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int odd, even;
oddEvenDiff(arr, n, odd, even);
cout << "The odd and even differences are: " << odd << " and " << even;
return 0;
}
ผลลัพธ์
The odd and even differences are: 4 and 5