最近刚看了刘汝佳讲的记忆化搜索,不错。以后动态规划可以自上而下的进行求解了,哈哈。原来的递归的那个自下而上的以前写过博客不提。
#include<iostream>
using namespace std;
int dp[101][101];
int map[101][101];
int n;
int maxi(int a,int b)
{
if(a>b)
return a;
else return b;
}
int search(int i,int j)
{
if(dp[i][j]!=-1)
return dp[i][j];
if(i==n)
{
dp[i][j]=map[i][j];
return dp[i][j];
}
dp[i][j]=maxi(search(i+1,j),search(i+1,j+1))+map[i][j];
return dp[i][j];
}
int main()
{
cin>>n;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
cin>>map[i][j];
dp[i][j]=-1;
}
cout<<search(1,1)<<endl;
return 0;
}
本文介绍了记忆化搜索的概念及其在动态规划中的应用,通过实例展示了如何使用记忆化搜索自上而下地解决动态规划问题。通过优化递归过程,避免重复计算,显著提高了算法效率。
1958

被折叠的 条评论
为什么被折叠?



