在下面的程序中,我想计算索引 s 和 e 之间大小为 l 的子数组的最大和。我的编译器显示 seg 错误

问题描述 投票:0回答:0
// Online C++ compiler to run C++ program online
#include <bits/stdc++.h>

using namespace std;

int n_o_l(vector<int> &v, int s, int e, int l) {
    if (l <= 1) return 0;

    int n = e - s + 1;
    int r_i, r_j, i = s, j = s, sum = 0, m = INT_MIN;

    while (j < s + l - 1) {
        sum += v[j++];
    }

    sum += v[j];

    while (j <= e) {
        sum -= v[i++];
        sum += v[++j];

        if (sum >= m) {
            m = max(sum, m);
            r_i = i; 
            r_j = j;
        }
    }

    cout << r_i << " " << r_j << "\n";
    cout << m;
}

int main() {
   vector<int> v{3, 8, 1, 3, 2, 1, 8, 9, 9};
   int n = v.size() - 1;
   cout << n_o_l(v, 1, 5, 2);
}

在上面的程序中,我想计算索引 s 和 e 之间大小为 l 的子数组的最大和。我不知道问题是什么,我的编译器显示分段错误

c++ recursion data-structures segmentation-fault
© www.soinside.com 2019 - 2024. All rights reserved.