一些诡异的问题
查看原帖
一些诡异的问题
705570
lzj001楼主2023/11/8 17:10
#include<bits/stdc++.h>
using namespace std;
#define rint register int
const int maxn=1e5+5;
inline int read() {
	int f=1,x=0;
	char c=getchar();
	while(c<'0'||c>'9') {
		if(c=='-')f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9') {
		x=(x<<3)+(x<<1)+(c^'0');
		c=getchar();
	}
	return x*f;
}
int n,m,x[maxn],f1[maxn],f2[maxn],ans=-0x3f3f3f3f;
int main() {
	freopen("ceshi.in","r",stdin);
	freopen("ceshi.out","w",stdout);
	n=read();
	for(rint i=1; i<=n; i++)x[i]=read();
	f1[1]=x[1];
	ans=x[1];
	for(rint i=2; i<=n; i++) {
		f1[i]=max(f1[i-1]+x[i],x[i]);
		ans=max(ans,f1[i]);
		cout<<ans<<endl;
	}
	cout<<ans;
	return 0;
}

为什么这段代码是错的但下面这段是正确的

#include<bits/stdc++.h>
using namespace std;
#define rint register int
const int maxn=1e5+5;
inline int read() {
	int f=1,x=0;
	char c=getchar();
	while(c<'0'||c>'9') {
		if(c=='-')f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9') {
		x=(x<<3)+(x<<1)+(c^'0');
		c=getchar();
	}
	return x*f;
}
int n,m,x[maxn],f1[maxn],f2[maxn],ans=-0x3f3f3f3f;
int main() {
	freopen("ceshi2.in","r",stdin);
	freopen("ceshi2.out","w",stdout);
	n=read();
	for(rint i=1; i<=n; i++) {
		x[i]=read();
		if(i==1)f1[i]=x[i];
		else f1[i]=max(f1[i-1]+x[i],x[i]);
		ans=max(f1[i],ans);
	}
	cout<<ans;
	return 0;
}

2023/11/8 17:10
加载中...