📜  在 C++ 代码示例中查找子数组和

📅  最后修改于: 2022-03-11 14:44:58.901000             🧑  作者: Mango

代码示例1
#include 
using namespace std;
int main()
{
    int arrayLen, totalSum;
    int arr[20];

    //input
    cin >> arrayLen >> totalSum;
    for (int i = 0; i < arrayLen; i++)
    {
        cin >> arr[i];
    }
    
    //algo
    // j => Loop iterator
    int i = 0, j = 0, start = -1, end = -1, sum = 0;

    while (j < arrayLen && sum + arr[j] <= totalSum) 
    {
        sum += arr[j];
        j++;
    } // after this loop sum is either greater than or equal to totalSum

    // If sum is equal
    if (sum == totalSum)
    {
        cout << i + 1 << " " << j << endl;
        return 0;
    }
    
    while (j < arrayLen)
    {
        sum += arr[j];
        
        while (sum > totalSum)
        {
            sum -= arr[i];
            i++;
        }

        if (sum == totalSum) //Store values
        {
            start = i + 1;
            end = j + 1;
            break;
        }
        j++;
    }
    cout << start <<" "<< end;

    return 0;
}