Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Prodentim Probiotics Specially Designed For The Health Of Your Teeth And Gums

Instant Grammar Checker - Correct all grammar errors and enhance your writing

Teach Your Child To Read

Powerful WordPress hosting for WordPress professionals

Disclosure: My content contains affiliate links.

31,094 questions

40,775 answers

573 users

How to find the index that split an array into two equal sum subarrays in C++

2 Answers

0 votes
#include <iostream>

int getSplitIndex(int arr[], int size) { 
    int leftSum = 0; 
  
    for (int i = 0; i < size; i++) { 
        leftSum += arr[i]; 
  
        int rightSum = 0; 
        for (int j = i + 1; j < size; j++) 
            rightSum += arr[j]; 

        if (leftSum == rightSum) 
            return i + 1; 
    } 
  
    return -1; 
} 

void printSplitParts(int arr[], int size) { 
    int splitIndex = getSplitIndex(arr, size); 
  
    if (splitIndex == -1 || splitIndex == size) { 
        std::cout << "No equal parts\n";
        return; 
    } 
    for (int i = 0; i < size; i++) { 
        if (splitIndex == i) 
            std::cout << "\n"; 
        std::cout << arr[i] << " " ; 
    } 
} 
int main() {
    int arr1[] = {1, 2, 3, 4, 5, 5}; 
    printSplitParts(arr1, sizeof(arr1)/sizeof(arr1[0])); 
    
    std::cout << "\n";
    
    int arr2[] = {1, 2, 3, 4, 5, 5, 1}; 
    printSplitParts(arr2, sizeof(arr2)/sizeof(arr2[0])); 
}



/*
run:

1 2 3 4 
5 5 
No equal parts

*/

 





answered Mar 11, 2021 by avibootz
edited Mar 11, 2021 by avibootz
0 votes
#include <iostream>
#include <iterator>

int getSplitIndex(int arr[], int size) { 
    int leftSum = 0; 
   
    for (int i = 0; i < size; i++) { 
        leftSum += arr[i]; 
   
        int rightSum = 0; 
        for (int j = i + 1; j < size; j++) 
            rightSum += arr[j]; 
 
        if (leftSum == rightSum) 
            return i + 1; 
    } 
   
    return -1; 
} 
 
int main() {
    int arr[] = { 1, 7, -3, 2, 4, 2, 1 };
    
    int size = sizeof(arr) / sizeof(arr[0]);
    
    int i = getSplitIndex(arr, size);
    
    copy(arr, arr + i, std::ostream_iterator<int>(std::cout, " "));
    
    std::cout << "\n";
    
    copy(arr + i, arr + size, std::ostream_iterator<int>(std::cout, " "));
     
}
 
 
 
 
/*
run:
 
1 7 -3 2 
4 2 1 
 
*/
 

 





answered Aug 6, 2022 by avibootz
...