Orange1015 @ 2022-05-21 16:34:09
#include<bits/stdc++.h>
using namespace std;
int r,a[1005][1005]={},mem[1005][1005]={};
int dp(int x,int y){
if(x==r) return a[x][y];
if(mem[x][y]) return mem[x][y];
return mem[x][y]=a[x][y]+max(dp(x+1,y),dp(x+1,y+1));
}
int main(){
cin >> r;
std::ios::sync_with_stdio(false);
for(int i=1;i<=r;i++)
for(int j=1;j<=i;j++)
cin >> a[i][j];
for(int i=1;i<=r;i++) mem[r][i]=a[r][i];
cout << dp(1,1);
return 0;
}
第8个点TLE
by John_Xiang @ 2022-05-30 09:37:11
帮你改了一下
using namespace std;
int r,a[1005][1005]={},mem[1005][1005]={};
int dp(int x,int y){
if(x==r) return a[x][y];
if(mem[x][y] != -1) return mem[x][y];
return mem[x][y]=a[x][y]+max(dp(x+1,y),dp(x+1,y+1));
}
int main(){
cin >> r;
std::ios::sync_with_stdio(false);
for(int i=1;i<=r;i++)
for(int j=1;j<=i;j++){
cin >> a[i][j];
mem[i][j] = -1;
}
for(int i=1;i<=r;i++) mem[r][i]=a[r][i];
cout << dp(1,1);
return 0;
}```