บทนำ
Bitonicity ของอาร์เรย์ คือค่าที่เริ่มต้นที่ 0 แล้ว:
- เพิ่ม 1 เมื่อสมาชิกถัดไป > สมาชิกก่อนหน้า
- ลด 1 เมื่อสมาชิกถัดไป < สมาชิกก่อนหน้า
- ไม่เปลี่ยนเมื่อเท่ากัน
ตัวอย่าง
arr[] = {1, 4, 3, 5, 2, 9, 10, 11} → Bitonicity = 3
แนวคิด
วนลูป i=1 ถึง n-1:
- arr[i] > arr[i-1] → bitonicity++
- arr[i] < arr[i-1] → bitonicity--
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int cal_bitonicity(int arr[], int n) {
int temp = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[i - 1])
temp++;
else if (arr[i] < arr[i - 1])
temp--;
}
return temp;
}
int main() {
int arr[] = {1, 4, 3, 5, 2, 9, 10, 11};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Bitonicity of an array is: " << cal_bitonicity(arr, n);
return 0;
}
ผลลัพธ์
Bitonicity of an array is: 3