5
3 9
8 2 4
out:18
数字三角形滚动数组
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a[10][10],f[2][10];
int main()
{
for(int i=1;i<=3;i++)
for(int j=1;j<=i;j++)
{
cin>>a[i][j];
// if(i==3) f[i][j]=a[i][j];
}
for(int i=3;i>=1;i--)
for(int j=1;j<=i;j++)
{
f[i%2][j]=max(f[(i+1)%2][j],f[(i+1)%2][j+1])+a[i][j];
}
cout<<f[1%2][1];
}
数字三角形降一维
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a[10][10],f[10];
int main()
{
for(int i=1;i<=3;i++)
for(int j=1;j<=i;j++)
{
cin>>a[i][j];
// if(i==3) f[i][j]=a[i][j];
}
for(int i=3;i>=1;i--)
for(int j=1;j<=i;j++)
{
f[j]=max(f[j],f[j+1])+a[i][j];
}
cout<<f[1];
}