How to find the subarray whose sum is equal to a given number N in C++

1 Answer

0 votes
#include <iostream>

void PrintSubarrayWithSumEqualToN(int arr[], int size, int N) {
    for (int i = 0; i < size; i++) {
        int current_sum = arr[i];
 
        if (current_sum == N) {
            std::cout << "Sum found at index: " << i;
            return;
        }
        else {
                for (int j = i + 1; j < size; j++) {
                    current_sum += arr[j];
 
                    if (current_sum == N) {
                        std::cout << "Sum found between index " << i << " and " << j << "\n";
                        for (int k = i; k <= j; k++)
                            std::cout << arr[k] << " ";
                        return;
                } 
                else if (current_sum > N) break;
            }
        }
    }
    std::cout << "No subarray found";
}


int main() {
    int arr[] = {2, 5, 8, 9, 1, 7, 12, 21, 19};
    int size = sizeof(arr) / sizeof(arr[0]);
    int N = 52;
    
    PrintSubarrayWithSumEqualToN(arr, size, N);
}




/*
run:

Sum found between index 6 and 8
12 21 19 

*/

 



answered Sep 26, 2022 by avibootz
edited Sep 26, 2022 by avibootz
...