📄 main.cpp
字号:
//: by Jay Kadane
// 输入是一个具有n个浮点数字的向量x;
// 其输出是在输入的任何相邻子向量中找出的最大和。
# include <iostream.h>
# include <algorithm>
const int n = 10;
template <typename T>
inline T const& max (T const& a, T const& b)
{
return a < b ? b : a;
}
int main()
{
//int x[] = {31, -41, 59, 26, -53, 58, 97, -93, -23, 84};
int x[n], i = 0;
for (i = 0; i < n; ++i)
{ cin >> x[i]; }
int maxsofar = 0, maxendinghere = 0;
int j = 0, k = 0;
for (i = 0; i < n; ++i)
{
// invariant: maxendinghere and maxsofar are accurate for x[0..i-1]
if ( (maxendinghere + x[i]) <= 0)
{ j = i + 1; }
maxendinghere = max(maxendinghere + x[i], 0);
if (maxendinghere > maxsofar)
{ k = i; }
maxsofar = max(maxsofar, maxendinghere);
}
cout << j << ", " << k << endl;
cout << maxsofar << endl;
return 0;
}
///~
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -