How to check if an array contains a contiguous subarray having zero-sum in C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool hasZeroSumSubarray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        int sum = arr[i];
        int startIndex = i;
        if (sum == 0) {
            return true;
        }
        for (int j = i + 1; j < size; j++) {
            sum += arr[j];
            int endIndex = j;
            if (sum == 0) {
                printf("index from: %d to: %d\n", startIndex, endIndex);
                return true;
            }
        }
    }
    
    return false;
}
 
int main()
{
    int arr[] = {8, 32, 4, -5, 1, 9};
    int size = sizeof(arr) / sizeof(arr[0]);
    
 
    bool hasZeroSum = hasZeroSumSubarray(arr, size);
 
    if (hasZeroSum) {
        puts("The array contains a contiguous subarray with zero-sum");
    }
    else {
        puts("The array does not contain a contiguous subarray with zero-sum");
    }
}
 
 
 
 
 
/*
run:
 
index from: 2 to: 4
The array contains a contiguous subarray with zero-sum
 
*/

 



answered Sep 8, 2023 by avibootz
...