记忆化搜索被卡?
查看原帖
记忆化搜索被卡?
345837
空木秋人楼主2020/10/22 17:17

第一次用动态规划做的过了,看题解说用搜索加记忆能做。本蒟蒻昨天刚学的记忆化搜索,才做了一道题。于是想加深一下理解。结果用记忆化倒数第二个测试点TLE。我怀疑是不是数据加强过了,现在记忆化能做吗?

int n,a[1005][1005],dp[1005][1005],ans;
int mem[1005][1005];

int solve(int x, int y){
   if(x==n) return a[x][y];
   return mem[x][y]?mem[x][y]:(mem[x][y]=max(solve(x+1,y),solve(x+1, y+1))+a[x][y]);
}

int main(){
//关闭同步,解除绑定
//std::ios::sync_with_stdio(false);
//std::cin.tie(0);
   scanf("%d",&n);
   for(int i=1;i<=n;++i){
       for (int j=1; j<=i; ++j) {
           scanf("%d",&a[i][j]);
       }
   }
   // for(int i=1;i<=n;++i){
   //     for (int j=1; j<=i; ++j) {
   //         dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j];
   //         if(dp[i][j]>ans) ans=dp[i][j];
   //     }
   // }
   printf("%d",solve(1, 1));
   return 0;
}

2020/10/22 17:17
加载中...