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

Năng lượng khởi tạo tối thiểu để vượt qua đường phố trong C++

Cho mảng chứa số dương và âm đại diện cho các trạm kiểm soát dọc đường phố. Số dương tăng năng lượng, số âm giảm. Cần tìm năng lượng khởi tạo sao cho năng lượng không bao giờ ≤ 0.

Ví dụ: A = {4, -6, 2, 3}. Năng lượng ban đầu 0: sau trạm 1 là 4, trạm 2 là -2 (≤0). Cần khởi tạo 3: sau trạm 1 là 7, trạm 2 là 1.

Thuật toán

nangLuongKhoiTaoToiThieu(arr, n):
    bắt đầu
        initEnergy := 0
        currEnergy := 0
        flag := false
        cho i từ 0 đến n, làm
            currEnergy := currEnergy + arr[i]
            nếu currEnergy <= 0, thì
                initEnergy := initEnergy + |currEnergy| + 1
                currEnergy := 1
                flag := true
            kết thúc nếu
        kết thúc
        nếu flag là false, trả về 1, ngược lại trả về initEnergy
    kết thúc

Ví dụ mã C++

#include <iostream>
#include <cmath>
using namespace std;

int nangLuongKhoiTaoToiThieu(int arr[], int n){
    int initEnergy = 0;
    int currEnergy = 0;
    bool flag = false;
    for (int i = 0; i < n; i++){
        currEnergy = currEnergy + arr[i];
        if (currEnergy <= 0){
            initEnergy = initEnergy + abs(currEnergy) + 1;
            currEnergy = 1;
            flag = true;
        }
    }
    if (flag == false)
        return 1;
    else
        return initEnergy;
}

int main() {
    int A[] = {4, -6, 2, 3};
    int n = sizeof(A)/sizeof(A[0]);
    cout << "Năng lượng tối thiểu: " << nangLuongKhoiTaoToiThieu(A, n);
}

Kết quả đầu ra

Năng lượng tối thiểu: 3