求助大佬,解决给关注⊙▂⊙
查看原帖
求助大佬,解决给关注⊙▂⊙
672776
XTianShuo楼主2022/10/18 15:46

为何第一份代码是对的,第二份代码是错的

100#include<bits/stdc++.h>
using namespace std;

#define int long long
const int N=3e6+10;

int n;
int a[N];
int f[N],g[N];
int l[N],r[N];

signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)	scanf("%lld",&a[i]);
	f[1]=a[1];g[n]=a[n];l[1]=a[1];r[n]=a[n];
	for(int i=2;i<=n;i++)
		f[i]=max(f[i-1],1ll*0)+a[i],l[i]=max(l[i-1],f[i]);
	for(int i=n-1;i>=1;i--)
		g[i]=max(g[i+1],1ll*0)+a[i],r[i]=max(r[i+1],g[i]);
	int ans=-1e18;
	for(int i=2;i<n;i++)
	{
		//cout<<i<<" "<<l[i]<<" "<<r[i+1]<<endl;
		ans=max(ans,l[i-1]+r[i+1]);
	}
	cout<<ans;
	return 0;
}


70#include<bits/stdc++.h>
using namespace std;

#define int long long
const int N=3e6+10;

int n;
int a[N];
int f[N],g[N];
int l[N],r[N];

signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)	scanf("%lld",&a[i]);
	for(int i=1;i<=n+n;i++)
		f[i]=g[i]=l[i]=r[i]=-1e18;
	for(int i=1;i<=n;i++)
		f[i]=max(f[i-1],1ll*0)+a[i],l[i]=max(l[i-1],f[i]);
	l[1]=f[1];
	for(int i=n;i>=1;i--)
		g[i]=max(g[i+1],1ll*0)+a[i],r[i]=max(r[i+1],g[i]);
	r[n]=g[n];
	int ans=-1e18;
	for(int i=2;i<n;i++)
	{
	//	cout<<i<<" "<<l[i-1]<<" "<<r[i+1]<<endl;
		ans=max(ans,l[i-1]+r[i+1]);
	}
	cout<<ans;
	return 0;
}
2022/10/18 15:46
加载中...