为什么两段代码结果不同
  • 板块灌水区
  • 楼主hjqhs
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/10/17 20:04
  • 上次更新2023/11/2 13:13:10
查看原帖
为什么两段代码结果不同
724988
hjqhs楼主2023/10/17 20:04

1:

cin>>n;
  rep(i,1,n)cin>>a[i];
  memset(f,-INF,sizeof(f)),memset(g,-INF,sizeof(g));
  rep(i,1,n)f[i]=Max(f[i-1]+a[i],a[i]);
  rep(i,1,n)f[i]=Max(f[i-1],f[i]);
  per(i,n,1)g[i]=Max(g[i+1]+a[i],a[i]);
  per(i,n,1)g[i]=Max(g[i+1],g[i]);
  rep(i,2,n-1)cmax(ans,f[i-1]+g[i+1]);
  cout<<ans;

100分 2:

cin>>n;
  rep(i,1,n)cin>>a[i];
  memset(f,-INF,sizeof(f)),memset(g,-INF,sizeof(g));
  rep(i,1,n)f[i]=Max(f[i-1]+a[i],a[i]),cmax(f[i],f[i-1]);
  // rep(i,1,n)f[i]=Max(f[i-1],f[i]);
  per(i,n,1)g[i]=Max(g[i+1]+a[i],a[i]),cmax(g[i],g[i+1]);
  // per(i,n,1)g[i]=Max(g[i+1],g[i]);
  rep(i,2,n-1)cmax(ans,f[i-1]+g[i+1]);
  cout<<ans;

50分
在我的认知中这两种写法应该是等价的 然后却给出了不同的评测结果 用样例测试并打印 f,gf,g 发现是一样的 那为什么评测结果不同呢?

附上 cmax 的实现
void cmax(int&x,int y){if(x<y)x=y;}
2023/10/17 20:04
加载中...