linshangyuan @ 2024-02-08 22:23:12
#include<bits/stdc++.h>
using namespace std;
int a[1001][1001],f[1001][1001],n;
int main ()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
for(int i=n;i>=1;i--)
for(int j=1;j<=i;j++)
f[i][j]=a[i][j]+max(f[i+1][j],f[i+1][j+1]);
cout<<f[1][1];
return 0;
}
by Imaginative @ 2024-02-08 22:49:53
f[i][j]=a[i][j]+max(f[i+1][j],f[i+1][j+1]);
这里,你数组只开1001会爆空间,开到1005就过了
by Terrible @ 2024-02-08 23:10:25
开 O2 和不开 O2,越界访问到的数组(内存位置)是不一样的。
https://www.luogu.com.cn/paste/l8bc1a40
不管怎么说,尽量避免数组越界行为。