Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chuyển mảng thành cấp số cộng bằng cách thêm 1 phần tử trong C++


Cho mảng, thêm 1 phần tử để mảng trở thành cấp số cộng. Trả về phần tử thêm, hoặc -1 nếu không thể.

Input: {1, 3, 5, 7, 11, 13, 15} Output: 9

Giải pháp: Sắp xếp mảng. Tính công sai d. Tìm vị trí sai lệch. Nếu chênh lệch = 2d thì chèn phần tử giữa. Nếu không sai lệch thì thêm cuối.

Chương trình minh họa

#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;
        }
    }
    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);
    return 0;
}

Kết quả

9