zoukankan      html  css  js  c++  java
  • 动态规划学习

    数字三角形问题

    把位置(i,j)看成一个状态,然后定义状态(i,j)的指标函数d(i,j):从位置(i,j)出发时能得到的最大和。

    递推计算:

    int i,j;

    //边界值处理

    for(j=1;j<=N;j++)

             result[N][j] = data[N][j];

    //由下向上动态规划,保存叶子节点到当前节点的最大值

    for(i=N-1; i>=1;i--)

             for(j = 1; j<=i; j++)

                       result[i][j] =data[i][j]+max(result[i+1][j],result[i+1][j+1])

    记忆化搜索:

    memset(result,-1,sizeof(result))

    int solve(int i, int j)

    {

             //判断result[i][j] >= 0,判断该节点是否已经被计算过

    if(result[i][j] >= 0)

             return result[i][j];

    return result[i][j] = data[i][j] + (i==N?0:max(solve(i+1,j),solve(i+1,j+1)));

    } 

    动态规划(DP)

    硬币问题:

    有n种硬币,面值分别为V1, V2, V3,……,Vn,每种面值的硬币有无限个,使得面值之和恰好为S,输出硬币数目的最大值和最小值。——固定终点的最长路和最短路

    有向无环图为DAG ( Directed Acyclic Graph)

    BFS

    万能的模板:

    推荐网址:

    http://poj.org/

    http://www.cnblogs.com/qiufeihai/archive/2012/09/11/2680840.html

    http://www.cnblogs.com/mengwang024/p/4342796.html

     
    http://www.cnblogs.com/Anker/archive/2013/03/15/2961725.html
  • 相关阅读:
    C# 应用
    WPF 应用
    WPF 应用
    WPF 应用
    WPF 基础
    WPF 基础
    WPF 应用
    WPF 应用
    下厨房
    买苹果
  • 原文地址:https://www.cnblogs.com/monkeyvera/p/4381661.html
Copyright © 2011-2022 走看看