1633629364zhukuan @ 2017-08-18 10:16:33
#include<iostream>
#include<algorithm>
using namespace std;
int k[505][505],f[505][505],n;
int gcd(int a,int b)
{
if(f[a][b]==-1)
{
if(a==n) f[a][b]=k[a][b];
else f[a][b]=k[a][b]+max(gcd(a+1,b),gcd(a+1,b+1));
}
return f[a][b];
}
int main()
{
int i,j;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
cin>>k[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
f[i][j]=-1;
gcd(1,1);
cout<<f[1][1]<<endl;
return 0;
}
by Windowssql2004 @ 2017-08-19 16:22:48
递归吗?复杂度太高了吧……
by Vimpire_D @ 2017-09-24 14:33:46
@Windowssql2004 这个不是用的记忆化吗?复杂度还是可以的吧
by 磨子桥蒟蒻 @ 2018-05-26 17:30:12
换成scanf。。。试试