heshaoshuai @ 2022-07-19 14:23:31
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int a[N][N], dp[N][N];
int n;
int dfs(int i,int j)
{
if(i==n)return a[i][j];
return
dp[i][j]=max(dfs(i+1,j),dfs(i+1,j+1))+
a[i][j];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cin>>a[i][j];
}
}
cout<<dfs(1,1);
}
by Hisaishi_Kanade @ 2022-07-19 14:24:50
@heshaoshuai 如果dp[i][j]
已经有结果,直接返回即可,而不是再算一次。
by Steven_Gerrard @ 2022-07-19 15:00:49
千万不要将dp和dfs混淆,思路都不同
by shit007 @ 2022-08-24 14:02:38
用记忆化搜索
by jyz2012 @ 2023-05-06 18:34:18
你告诉我这是dp