Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

แปลง Array ให้เป็น Arithmetic Progression โดยเพิ่มสมาชิกใน C++

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลง 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