Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么总是WrongAnswner?#include <stdio.h> #include <stdlib.h> void max_sum_left(int *array_num, int n, int *array_sum) { int sum = 0; int max_sum = array_num[0]; array_sum[0] = array_num[0]; int i; for (i = 1; i < n; ++i){ sum += array_num[i]; if (max_sum < sum) max_sum = sum; if (0 > sum) sum = 0; array_sum[i] = max_sum; } }; void max_sum_right(int *array_num, int n, int *array_sum) { int sum = 0; int max_sum = array_num[n - 1]; array_sum[n - 1] = array_num[n - 1]; int i; for (i = n - 2; i > -1; --i){ sum += array_num[i]; if (max_sum < sum) max_sum = sum; if (0 > sum) sum = 0; array_sum[i] = max_sum; } }; int max_sum(int *array_num, int n) { int *array_left = (int *)malloc(sizeof(int) * n); int *array_right = (int *)malloc(sizeof(int) * n); max_sum_left(array_num, n, array_left); max_sum_right(array_num, n, array_right); int sum = array_left[0] + array_right[1]; int max_sum = sum; int i; for (i = 1; i < n - 1; ++i){ sum = array_left[i] + array_right[i + 1]; max_sum = (sum > max_sum) ? sum : max_sum; } free(array_left); free(array_right); return max_sum; }; void loop() { int n; scanf("%d", &n); int * array_num; array_num = (int *) malloc(sizeof(int) * n); int i = 0; int in; while (i < n){ scanf("%d", &in); array_num[i] = in; ++i; } printf("%d\n", max_sum(array_num, n)); free(array_num); }; int main(void) { int n; scanf("%d", &n); int i = 0; while (i++ < n){ getchar(); loop(); } return 0; }; Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator