【发布时间】:2017-11-27 12:08:35
【问题描述】:
我必须编写一个程序,对数组的顺序元素求和并输出最大和。正如您将看到的,如果所有元素都是负数,我的算法将不起作用。
#include <iostream>
int main()
{
int nums[1000] = {-1,-3,-4,-2,-5,-1,-9,-4,-2,-2};
int sums[100][100];
int n = 9;
for(int i = 0; i <= n; i++) {
for(int j = n; j >= i; j--) {
for(int k = j; k >= i; k--) {
sums[i][j] += nums[k];
}
}
}
int max_sum = 0;
int max_begin;
int max_end;
for(int i = 0; i <= n; i++) {
for(int j = i+1; j <= n; j++){
std::cout << "i = " << i << " j = " << j << ": " << sums[i][j] << "\n";
if(max_sum < sums[i][j]) {
max_sum = sums[i][j];
max_begin = i;
max_end = j;
}
}
}
std::cout << "Maximum: " << max_sum << " bei i = " << max_begin << " bis j = " << max_end;
return 0;
}
我已经尝试过这个解决方案
#include <climits>
...
int max_sum = INT_MIN;
...
虽然这工作得很好,但我们的讲座还没有限制,所以我正在寻找另一种方法。
【问题讨论】:
-
为什么不能你使用
climits?std::numeric_limits怎么样?您故意避免使用规范解决方案,但为了什么? -
我可以使用
climits。但我认为必须有一个替代解决方案,因为我们的讲座还没有限制,我有兴趣知道它。 -
我应该如何使用
std::numeric_limits?我看不到如何将它集成到我的代码中