问题标题: 酷町堂:3894

0
1
已解决
刘乐宸
刘乐宸
新手天翼
新手天翼
#include<algorithm>
#include<iostream>
#include<string>
#include<cstdio>
#include<cmath>
//#include <windows.h>
using namespace std;
int a[10001],f[10001],mx,mi;
int main(){
//  freopen("AC.in","r",stdin);
//  freopen("AC.out","w",stdout);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        f[i]=a[i]+a[i-1];
        mx=max(f[i],mx);
        mi=min(f[i],mi);
    }
    cout<<mx-mi;
//  fclose(stdin);
//  fclose(stdout);
    return 0;
}

哪错了


0
已采纳
蔡乐毅
蔡乐毅
高级光能
高级光能

你这个思路是不对的

比如:6 7 2 1

你这样最大值是7,最小值是1

答案是6.

但实际上只有1

咋改?

我教你!

mi=min(mi,a[i]);

mx=max(mx,a[i]-mi);

最后输出mx就O了

没错,就是这么简单!

蔡乐毅在2020-11-04 22:52:18追加了内容

另外你的mi也没赋初值

mi=0x3f3f3f3f;

0
张天璨
张天璨
新手天翼
新手天翼

这道题与最大连续子序列比较相似

我要回答