最大差值c++

最大差值問題通常指的是在一組數中找到兩個數之間的最大差值。這個問題有很多變體,例如可以在整個數組中找到最大差值,也可以在數組的一段連續子集中找到最大差值。下面是一個簡單的C++程式,它可以在整個數組中找到最大差值:

#include <iostream>
#include <vector>

using namespace std;

int findMaxDiff(const vector<int>& numbers) {
    int maxDiff = 0;
    for (int i = 0; i < numbers.size() - 1; i++) {
        int diff = numbers[i + 1] - numbers[i];
        if (diff > maxDiff) {
            maxDiff = diff;
        }
    }
    return maxDiff;
}

int main() {
    vector<int> numbers = {1, 3, 10, 5, 2, 9};
    int maxDiff = findMaxDiff(numbers);
    cout << "The maximum difference is " << maxDiff << endl;
    return 0;
}

這個程式首先定義了一個函式findMaxDiff,它接受一個整數數組作為參數,並返回數組中兩個數之間的最大差值。函式內部,它遍歷數組中的所有數,計算相鄰數之間的差值,並記錄最大的差值。

main函式中,我們定義了一個整數數組numbers,並調用findMaxDiff函式來找到數組中的最大差值。然後,我們將結果列印到控制台。

如果你想要在一段連續子集中找到最大差值,那麼你需要提供一個額外的參數來指定子數組開始的位置和結束的位置。例如,你可以這樣定義findMaxDiff函式:

int findMaxDiff(const vector<int>& numbers, int start, int end) {
    int maxDiff = 0;
    for (int i = start; i < end - 1; i++) {
        int diff = numbers[i + 1] - numbers[i];
        if (diff > maxDiff) {
            maxDiff = diff;
        }
    }
    return maxDiff;
}

在這個版本中,startend參數用於指定子數組的範圍。函式內部,它只遍歷在這個範圍內的數,而不是整個數組。

請注意,這些函式假設數組中沒有負數,並且沒有進行邊界檢查。在實際套用中,你可能需要添加額外的代碼來處理這些情況。