How to find the maximum value we can achieve by picking k elements from an array in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    return (*(int*)b - *(int*)a); // sort descending
}

int maxSumK(int arr[], int n, int k) {
    qsort(arr, n, sizeof(int), compare);

    int sum = 0;
    for (int i = 0; i < k; i++)
        sum += arr[i];

    return sum;
}

int main() {
    int arr[] = {11, 2, 4, 9, 3, 6, 5, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    int k = 3;

    int result = maxSumK(arr, size, k);
    printf("Maximum sum = %d\n", result);

    return 0;
}


/*
run:

Maximum sum = 26

*/

 



answered Apr 5 by avibootz

Related questions

...