- 论坛徽章:
- 2
|
暴力法
- #include <stdio.h>
- int sum(int *array, int array_len)
- {
- int i;
- int sum_data;
- sum_data = 0;
- for (i = 0; i < array_len; i++) {
- sum_data += array[i];
- }
- return sum_data;
- }
- int max_sum(int *array, int array_len)
- {
- int max_data;
- int max_start;
- int max_end;
- int i, j;
- int data;
- if (array_len > 0) {
- max_data = array[0];
- max_start = 0;
- max_end = 0;
- for (i = 0; i < array_len; i++) {
- for (j = i; j < array_len; j++) {
- data = sum(array + i, j - i + 1);
- if (data > max_data) {
- max_data = data;
- max_start = i;
- max_end = j;
- }
- }
- }
- printf("{");
- for (;max_start <= max_end; max_start++) {
- printf("%d", array[max_start]);
- if (max_start < max_end) {
- printf(", ");
- }
- }
- printf("}\n");
- return 0;
- }
- return -1;
- }
- #define LENGTH(a) (sizeof(a)/sizeof((a)[0]))
- int main(void)
- {
- int a[] = {9, -12, 120, 8, -20, 100, 30, -89, 20};
- max_sum(a, LENGTH(a));
- return 0;
- }
复制代码 |
|