zoukankan      html  css  js  c++  java
  • 动态规划____数塔 递推方法(以前都是记忆化搜索)

    比较值得说的是 如果脑子里确实有很明确的递推图(注意是图,根据递推式演变来的二维矩阵(也许三维),或者一维的"类"有向图)那么递推写起来快得多。否则还是记忆化搜索保险。

    1.但是跟所有动规问题类似,务必注意边界,建议把第一条横边(i = 0  0<j<N ) && 竖边( j = 0  0<i<N ) 单独提取出来赋值。

    2.注意边界的同时,更要注意起始点的赋值 map[0][0] = input[0][0]

    3.以及输出的结果应该为 map[N-1][N-1] 而非 map[N][N]

    #include <stdio.h>
    
    
    int input[1010][1010];
    int map[1010][1010];
    
    int min(int a, int b)
    {
        return a<b?a:b;
    }
    
    int main()
    {
        int N;
        int i, j;
        
        while(scanf("%d", &N) == 1)
        {
            for(i = 0; i < N; i++)
            {
                for(j = 0; j < N; j++)
                    scanf("%d", &input[i][j]);
            }
    
            map[0][0] = input[0][0];
    
            for(j = 1; j < N ;j++) 
                map[0][j] = map[0][j-1] + input[0][j];
    for(i = 1; i < N; i++) map[i][0] = map[i-1][0] + input[i][0];
    for(i = 1; i < N; i++) { for(j = 1; j < N; j++) { map[i][j] = min(map[i-1][j], map[i][j-1]) + input[i][j]; } } printf("%d ", map[N-1][N-1]); } return 0; }

    http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1147

  • 相关阅读:
    分布式
    jdk与jre的区别
    rabbitmq
    dicom错误解决
    centos6.5搭建hadoop完整教程
    spark
    Oracle索引扫描
    Oracle的rowid结构解析
    PL/SQL — 集合及常用方法
    PL/SQL — 变长数组
  • 原文地址:https://www.cnblogs.com/wwjyt/p/3168664.html
Copyright © 2011-2022 走看看