记忆化递归

#include<iostream>
using namespace std;
int a=3030,x=30130,n
int dfs(int x,int y)
if(x>n)return0;//边界
if(f[x1][y1])returnf[x1][y];//问题求解过,直接返回
return f[x][v]=max(dfs(x+1.v).dfs(x+1.V+1))+a[x][v];//状态转移方程
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);
}
}
}

地推

#include<iostream
using namespace std;
int a[10000],f[10000],n,ans;
int main(){
  cin>>n;
  for(int i=l:i<=n:i++){
    cin>>a[i];
    f[1]=a[1];
  }
  for(int i=2;i<=n;i++){
    fi=max(fi-1+ai,ai)
    ans=max(ans,fli)
  }
}
cout<<ans;