コード例 #1
0
int main() {
    bool flag = false;
    int A[] = {3, 4, 3, 6, -1, 7, -10, 9, 10};
    printf("max sub array sum = %d\n", max_subarray_sum(A, sizeof(A)/sizeof(A[0]), flag));
    printf("max sub array multiply = %d\n", max_subarray_multi(A, sizeof(A)/sizeof(A[0]), flag));
    int B[] = {-100};
    printf("max sub array sum = %d\n", max_subarray_sum(B, sizeof(B)/sizeof(B[0]), flag));
    printf("max sub array multiply = %d\n", max_subarray_multi(B, sizeof(B)/sizeof(B[0]), flag));
    return 0;
}
コード例 #2
0
ファイル: maxarray.c プロジェクト: ebtaleb/AAGA
int
max_subarray_sum(int arr[], int l, int h)
{
   // Base Case: Only one element
   if (l == h)
     return arr[l];
 
   // Find middle point
   int m = (l + h)/2;
 
   /* Return maximum of following three possible cases
      a) Maximum subarray sum in left half
      b) Maximum subarray sum in right half
      c) Maximum subarray sum such that the subarray crosses the midpoint */
   return max3(max_subarray_sum(arr, l, m),
              max_subarray_sum(arr, m+1, h),
              max_crossing_sum(arr, l, m, h));
}
コード例 #3
0
ファイル: maxarray.c プロジェクト: ebtaleb/AAGA
void
test(int count){
    srand(time(NULL));
    int i = -1;
    char buffer[50];

    FILE *pFile = NULL;
    pFile = fopen("maxarrdata.txt", "w");

    int naive_res = -1;
    int opt_res = -1;
    srand(time(NULL));
    for (i = 1; i < count; i = i + 1000) {
        init(i);
        init_timer;

        first_step_timer;
        naive_res = naive_max_array_sum(ALEA, i);
        second_step_timer;
        snprintf(buffer, sizeof(buffer), "%d %lf ", i, tim1);
        //printf("%d\n", naive_res);

        first_step_timer;
        opt_res = max_subarray_sum(ALEA, 0, i-1);
        second_step_timer;
        snprintf(buffer+strlen(buffer), sizeof(buffer), "%lf\n", tim1);
        //printf("%d\n", opt_res);

        buffer[strlen(buffer)] = '\0';
        fwrite(buffer, sizeof(char), strlen(buffer), pFile);

        free(ALEA);
        ALEA = NULL;
        assert(naive_res == opt_res);
    }

    fclose(pFile);
}
コード例 #4
0
int main(void) {

	printf("Max subarray sum :%ld\n", max_subarray_sum(arr, SIZE(arr)));
	return 0;
}