# How to split an array into K subarrays ###### tags: `Issue` * Tutorial:\ 1. C++ only with vector STL https://www.youtube.com/watch?v=kbEvi_jEtmQ&ab_channel=MiketheCoder 2. Using python with toolkit https://stackoverflow.com/questions/9088321/show-all-possible-groupings-of-a-list-given-only-the-amount-of-sublists-length ```cpp= #include <stdio.h> #include <stdlib.h> #include <iostream> int ans = 100000000; // the answer is stored in ans // we call this function solve // max function is used to find max of two elements int max(int a, int b) { return a > b ? a : b; } // min function is used to find min of two elements int min(int a, int b) { return a < b ? a : b; } void divider(int a[], int n, int k, int index, int pre_sum) { // K=1 is the base Case if (k == 1) { // maxsum = max(maxsum, sum); int last = 0; for (int i = index; i < n; i++) { last += a[i]; } int maxsum = pre_sum + last * (n - index); // we update maxsum // maxsum = max(maxsum, sum); // the answer is stored in ans ans = min(ans, maxsum); return; } int sum = 0; // using for loop to divide the array into K-subarray for (int i = index; i < n; i++) { sum += a[i]; int proportion = sum * (i - index + 1); // for each subarray we calculate sum ans update // maxsum // maxsum = max(maxsum, sum); // calling function again divider(a, n, k - 1, i + 1, proportion + pre_sum); } } // Driver Code int main() { int arr[] = {1, 3, 2, 4}; int k; // K divisions std::cin >> k; int n = 4; // Size of Array solve(arr, n, k, 0, 0); printf("ans = %d", ans); } ```