ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลง array ให้เป็น arithmetic progression โดยการเพิ่มสมาชิกเข้าไป
สำหรับนี้ เราจะได้รับ array งานของเราคือแปลง array ให้เป็น arithmetic progression โดยเพิ่มสมาชิกเพียงตัวเดียวและคืนค่าสมาชิกที่เพิ่ม ถ้าไม่ได้ ให้คืน -1
โปรแกรมตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
// คืนค่าตัวเลขที่ต้องเพิ่ม
int print_number(int arr[], int n) {
sort(arr, arr + n);
int d = arr[1] - arr[0];
int numToAdd = -1;
bool numAdded = false;
for (int i = 2; i < n; i++) {
int diff = arr[i] - arr[i - 1];
if (diff != d) {
if (numAdded)
return -1;
if (diff == 2 * d) {
numToAdd = arr[i] - d;
numAdded = true;
}
else
return -1;
}
}
// คืนค่าสมาชิกสุดท้าย + common difference
if (numToAdd == -1)
return (arr[n - 1] + d);
// มิฉะนั้นคืนค่าที่เลือก
return numToAdd;
}
int main() {
int arr[] = {1, 3, 5, 7, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
cout << print_number(arr, n);
}
ผลลัพธ์
9