刘芝麻 @ 2019-08-01 11:18:28
本人学了2年pascl,pascal过了这题。现在正努力开始转c++,用自学的c++打出来,自信地交出去,结果RE了一个点,求助
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[1000][1000];
int f[1000][1000];
int i,n,j,maxs;
maxs=-11111;
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
cin>>a[i][j];
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
if (f[i-1][j]>f[i-1][j-1]) f[i][j]=f[i-1][j]+a[i][j]; else f[i][j]=f[i-1][j-1]+a[i][j];
for (i=1;i<=n;i++)
if (f[n][i]>maxs) maxs=f[n][i];
cout<<maxs;
return 0;
}
by wyw666 @ 2019-08-01 11:22:33
话说数组是不是不应该在main里定义
main里开不了这么大吧
by 金庆涵 @ 2019-08-10 20:14:29
如果RE,把数组放全局范围里(函数外面),函数的栈空间受不了两个1000 * 1000的int数组。另外,if和三种循环里定义的变量是占用分配给if和循环体的空间里的。
by wyb0412 @ 2019-08-18 10:40:27
using namespace std;
int n, a[1005], i, j, ans, p; int max(int &x, int &y) {return x>y?x:y;} int main() { cin >> n; for(i=n;i;i--) for(j=i;j<=n;j++) scanf("%d",&p),a[j]=max(a[j],a[j+1])+p; for(i=1;i<=n;i++) ans = max(ans,a[i]); printf ("%d", ans); return 0; }
by joerjose @ 2019-10-04 10:16:50
应该是这样的
#include<bits/stdc++.h>
using namespace std;
long long a[1001][1001],n,m,tot,maxn;
int main()
{
cin>>n;
tot=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=tot;j++)
{
cin>>a[i][j];
}
tot++;
}
for(int i=n;i>1;i--)
{
for(int j=1;j<=tot-1;j++)
{
if(a[i][j]>=a[i][j+1]) a[i-1][j]+=a[i][j];
else a[i-1][j]+=a[i][j+1];
}
tot--;
}
cout<<a[1][1];
return 0;
}