这道题的第二个测试点怎么弄都过不了,就是起始元素的位置过不了,感觉总是跳过了我的搜索过程直接输出了位置的初始值0,麻烦大佬们帮我看看我这代码哪里有问题。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int v[N];
int f[N];
int main(){
int n,a = 0,b = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> v[i];
}
int ans = f[0];
for(int i = 1; i <= n; i++) {
f[i] = max(f[i - 1] , 0) + v[i];
}
for(int i = 1; i <= n; i++) {
if(ans < f[i]) {
ans = f[i];
b = i;
}
}
for(int i = b; i >= 1 ;i--)
{
if(f[i] == v[i])
{
a = i;
break;
}
}
cout << a << endl << b << endl << ans;
return 0;
}
By signing up a 追梦算法网 universal account, you can submit code and join discussions in all online judging services provided by us.