From 85b0daec2346d0b7bc4cda3166ba817f2fda90f9 Mon Sep 17 00:00:00 2001 From: 2Clutch <13703683+2Clutch@users.noreply.github.com> Date: Sun, 19 Jan 2025 12:34:57 -0500 Subject: [PATCH 1/2] add maximum-subarray.c --- archive/c/c/maximum-subarray.c | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 archive/c/c/maximum-subarray.c diff --git a/archive/c/c/maximum-subarray.c b/archive/c/c/maximum-subarray.c new file mode 100644 index 000000000..b59053502 --- /dev/null +++ b/archive/c/c/maximum-subarray.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include + +void print_usage() { + printf("Usage: Please provide a list of at least two integers to sort in the format: '1, 2, 3, 4, 5'\n"); +} + +int max_subarray_sum(int* arr, int n) { + int max_so_far = INT_MIN; + int max_ending_here = 0; + + for (int i = 0; i < n; i++) { + max_ending_here += arr[i]; + + if (max_so_far < max_ending_here) { + max_so_far = max_ending_here; + } + + if (max_ending_here < 0) { + max_ending_here = 0; + } + } + + return max_so_far; +} + +int main(int argc, char* argv[]) { + if (argc < 2) { + print_usage(); + return 1; + } + + // Check if input is empty + if (strlen(argv[1]) == 0) { + print_usage(); + return 1; + } + + // Parse input string + char* token; + int arr[100]; // Assuming a maximum of 100 integers + int count = 0; + + token = strtok(argv[1], ","); + while (token != NULL) { + arr[count++] = atoi(token); + token = strtok(NULL, ","); + } + + // If less than two integers were provided + if (count < 2) { + print_usage(); + return 1; + } + + // Calculate maximum subarray sum + int result = max_subarray_sum(arr, count); + + printf("%d\n", result); + + return 0; +} From fc183e45a1366de82d528d46925aef9a4619ab82 Mon Sep 17 00:00:00 2001 From: 2Clutch <13703683+2Clutch@users.noreply.github.com> Date: Sun, 19 Jan 2025 12:38:46 -0500 Subject: [PATCH 2/2] fix usage message & single element handling --- archive/c/c/maximum-subarray.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/archive/c/c/maximum-subarray.c b/archive/c/c/maximum-subarray.c index b59053502..85fa292f6 100644 --- a/archive/c/c/maximum-subarray.c +++ b/archive/c/c/maximum-subarray.c @@ -4,7 +4,7 @@ #include void print_usage() { - printf("Usage: Please provide a list of at least two integers to sort in the format: '1, 2, 3, 4, 5'\n"); + printf("Usage: Please provide a list of integers in the format: \"1, 2, 3, 4, 5\"\n"); } int max_subarray_sum(int* arr, int n) { @@ -50,7 +50,10 @@ int main(int argc, char* argv[]) { } // If less than two integers were provided - if (count < 2) { + if (count == 1) { + printf("%d\n", arr[0]); + return 0; + } else if (count < 2) { print_usage(); return 1; }