c++
方法一:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int N,num;
cin >> N;
vector<int> m;
for (int i = 0; i < N; ++i)
{
cin >> num;
m.push_back(num);
}//输入值和长度
int max = m[0];
for (int i = 0; i<N; i++)
{
int sum = 0; //sum必须清零
for (int j = i; j<N; j++)
{
sum += m[j];
if (sum > max)
max = sum;
}
}
cout << max << endl;
system("pause");
return 0;
}
时间复杂度是O(N^2)
方法二:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int N, num;
cin >> N;
vector<int> m;
for (int i = 0; i < N; ++i)
{
cin >> num;
m.push_back(num);
}
//输入值,比较
int max1 = m[0], max2 = m[0];
for (int i = 0; i < N; ++i)
{
if (max1 < 0)
{
max1 = m[i];
}
else
{
max1 += m[i];
}
if (max1 > max2)
max2 = max1;
}
cout << max2 << endl;
system("pause");
return 0;
}
o(N)
python实现:
def f1(arr):
max=sum=arr[0]
for i in arr:
if sum<0:
sum=i
else:
sum +=i
if sum>max:
max=sum
return max
if __name__ == '__main__':
n = input()
array = input()
N = int(n)
arr = array.split(' ')
for i in range(N):
arr[i] = eval(arr[i])
print(f1(arr))