动态规划-记忆化搜索

Posted TQCAI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划-记忆化搜索相关的知识,希望对你有一定的参考价值。

1.数字三角形

学习链接:http://blog.csdn.net/zwhlxl/article/details/46225947

输入样例:

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

输出样例:

30

递归代码:

技术分享图片
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>


#define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 101
#define MAX 1<<30
#define V vector<int>

using namespace std;

int num[LEN][LEN]; 
int dp[LEN][LEN];
int n;

int getMax(int i,int j){
    if(dp[i][j]>=0) return dp[i][j]; 
    if(i==n) return num[i][j];
    int a=getMax(i+1,j);
    int b=getMax(i+1,j+1);
    dp[i][j]=max(a,b)+num[i][j];
    return dp[i][j];
}

int main(){
    freopen("数字三角形.txt","r",stdin);
    int i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        for(j=1;j<=i;j++){
            I("%d",&num[i][j]);
        }
    }
    for(i=1;i<=n;i++)
        fill(dp[i],dp[i]+1+n,-1);
    printf("%d",getMax(1,1));
    return 0;
}
View Code

循环代码:

技术分享图片
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>

#define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 101
#define MAX 1<<30
#define V vector<int>

using namespace std;

int num[LEN][LEN]; 
int dp[LEN][LEN];
int n;

int main(){
    freopen("数字三角形.txt","r",stdin);
    int i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        for(j=1;j<=i;j++){
            I("%d",&num[i][j]);
        }
    }
    for(i=1;i<=n;i++)
        dp[n][i]=num[n][i];
    for(i=n-1;i>=1;i--){
        for(j=1;j<=i;j++){
            dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+num[i][j];
        }
    }
    printf("%d",dp[1][1]);
    return 0;
}
View Code

 


 

以上是关于动态规划-记忆化搜索的主要内容,如果未能解决你的问题,请参考以下文章

动态规划的引入 P1434 [SHOI2002]滑雪DFS+记忆化搜索

区间型动态规划的记忆化搜索实现与环形动态规划的循环数组实现

动态规划_计数类dp_数位统计dp_状态压缩dp_树形dp_记忆化搜索

CUCS算法连载图论 - 动态规划与记忆化搜索

从暴力递归到动态规划,记忆化搜索

Codevs_1017_乘积最大_(划分型动态规划/记忆化搜索)