static inline std::pair<length_t, length_t> maximum_subarray(const data_t* data, length_t len, length_t minSpacing=1) { length_t start_best = 0, end_best = 0; maximum_subarray(data, len, start_best, end_best, minSpacing); return std::pair<length_t, length_t>(start_best, end_best); }
int main() { int a[] = {13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7}; printf("sum %d\n", maximum_subarray(a, 0, sizeof(a)/sizeof(a[0]))); printf("left %d right %d\n", l_index, h_index); return 0; }
int maximum_subarray (std::vector<int> v, int lower, int upper) { if (lower == upper) return v[lower]; else { int m = (lower + upper) / 2; int left_sum = maximum_subarray (v, lower, m); int right_sum = maximum_subarray (v, m + 1, upper); int cross_sum = maximum_crossing_subarray (v, lower, m, upper); if (left_sum >= right_sum && left_sum >= cross_sum) return left_sum; else if (right_sum >= left_sum && right_sum >= cross_sum) return right_sum; else return cross_sum; } }
int main(void) { std::ifstream f ("date.in"); std::vector<int> v; v = {-2, 1, -3, 4, -1, 2, 1, -5, 4}; std::cout << "v: " << v << std::endl; std::cout << "Suma maximă: " << maximum_subarray (v, 0, v.size ())<< std::endl; f.close(); }
int main() { maximum_subarray(); return 0; }
static inline std::pair<length_t, length_t> maximum_subarray( const Container<data_t>& data, length_t minSpacing=1) { return maximum_subarray(data.data(), data.size(), minSpacing); }