刷表法 和 填表法

在dp问题中,当我们写出了状态转移方程的时候,一般可以直接去迭代求解。
但是,与此同时有一个问题:例如 状态转移方程 是dp[i][j]=F{dp[i-1][j-1],dp[i-1][j],dp[i-1][j-1]} 这样的形态时,如何进行枚举呢?是枚举dp[i][j],由dp[i-1][j-1],dp[i-1][j],dp[i-1][j-1]更新dp[i][j],抑或是枚举dp[i-1][j-1],去更新dp[i+1][j+1],dp[i+1][j],dp[i][j+1]。
填表法:可以枚举 dp[i][j],然后用dp[i-1][j-1],dp[i-1][j],dp[i][j-1]去更新他,这就叫做填表法,就好像在填表格的一个一个空格一样,枚举未知量,现在的未知量可以由已知量求出。
刷表法:也可以使用d[i][j]去更新dp[i+1][j]和dp[i+1][j+1],dp[i][j+1]的值,枚举已知量,并且依据此更新依赖于它的未知量状态,注意此时的未知量可以是之前的,也可以是之后的。
通常使用的都是比较直观的填表法,但是当状态转移方程比较难以写成当前状态dp[i][j]由哪些先前的状态转化而来,反而更容易写成/理解到当前的状态会影响哪些后续状态,那么就适合使用刷表法。我感觉一般刷表法的思考难度会高一些。
例如 UVA - 1371 Period求解就比较适合使用刷表法。
还有 修复DNA这题也比较适合刷表法。

刷表法 和 填表法(DP)相关推荐

  1. 洛谷P1156 垃圾陷阱 题解浅谈刷表法与填表法

    洛谷P1156 垃圾陷阱 题解&浅谈刷表法与填表法 填表法 :就是一般的动态规划,当前点的状态,可以直接用状态方程,根据之前点的状态推导出来. 刷表法:由当前点的状态,更新其他点的状态.需要注 ...

  2. 树上的动态规划--树的最大独立集--刷表法

    树的最大独立集 对于一棵有N个结点的无根树,选出尽量多的结点,使得任何两个结点均不相邻(称为最大独立集). 输入 第1行:1个整数N(1 <= N <= 6000),表示树的结点个数,树中 ...

  3. 【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★

    文章目录 一.运输规划模型 1.产销平衡模型 2.产销不平衡模型 二.运输规划数学模型变量个数 三.表上作业法 四.表上作业法 : 求初始基可行解 1.最小元素法 2.差额法 ( Vogel ) 推荐 ...

  4. 00002-两数之和-leetcode-1.暴力法(枚举法),2.哈希表法,目前更新了枚举法

    两数之和 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. ...

  5. 填表法解“银行家算法”问题

    银行家算法( banker's algorithm )由 Dijkstra(1065)提出.他将死锁的问题演示为一个银行家贷款的模型. 一个银行家向一群客户发放信用卡,每个客户有不同的信用额度.每个客 ...

  6. igs无法分配驱动器映射表_左神算法基础:哈希函数和哈希表

    笔者在读研刚开始的时候,偶尔看面经,有这样一个问题:只用2GB内存在20亿个整数中找到出现次数最多的数,当时的我一脸懵逼,怎么去思考,20亿个数?What The Fuck! 但是,看完今天的文章,你 ...

  7. SWUST OJ 1012: 哈希表(链地址法处理冲突)

    1012: 哈希表(链地址法处理冲突) 题目描述 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法. 输入 第一行为哈西表的长度m: 第二 ...

  8. 线性表中的头插法双链表的学习

    #include <stdio.h> #include <malloc.h>/*** 线性表中的头插法双链表的学习 *//*** 人类*/ typedef struct Per ...

  9. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

    文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...

最新文章

  1. 模型剪枝(Pruning)
  2. ssr pac_阴阳师新SSR千姬什么时候上线 ssr千姬活动上线时间一览
  3. linux虚拟机时间不准的问题
  4. fft的c语言和matlab对比_傅里叶级数(FS)、傅里叶变换(FT)快速傅里叶变换(FFT)及量子傅里叶变换(QFT)之间推导关系...
  5. 从零开始学Java之 编写简单的工程
  6. Jquery ajax, Axios, Fetch区别之我见
  7. 7.1-7.31推荐文章汇总
  8. 20181215《linux设备驱动开发详解》宋宝华 学习笔记(1)
  9. Java短信验证码-互亿无线
  10. opencv3和opencv4多线程内存泄漏问题
  11. w ndows10更改浏览器,Win10系统默认浏览器怎么修改
  12. snapchat 登录不上_如何在Snapchat上举报某人
  13. 现代软件工程 第一章 【概论】练习与讨论 第6题 邓杰
  14. WIN7用键盘控制鼠标
  15. Python数据挖掘:利用聚类算法进行航空公司客户价值分析
  16. chrome浏览器F12 Network中Timing参数含义
  17. 为什么说 Ubuntu 22.04 LTS 是史诗级的版本
  18. 栋的月结 | 第二回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]
  19. 基于Java语言的语法分析器
  20. 2021 ICPC Southeastern Europe Regional Contest ABFGJKLN

热门文章

  1. VB中If与ElseIf的区别
  2. android浏览器和iPhone浏览器
  3. 计算机显示器的三原色是,显示器参数看不懂?看完你就明白啦!
  4. 数学建模:整数规划示例模型 (Python 求解)
  5. python之使用cmd命令行写程序
  6. Pikka 2.1.0 macOS菜单栏屏幕取色器
  7. 计算机网络思维导图_计算机网络面试指南 考研/校招
  8. matlab画三维图如何更改颜色,matlab画三维图像的示例代码(附demo)
  9. [4G5G基础学习]:流程 - 4G LTE PLMN选择、扫频、小区搜索、系统消息读取、小区选择过程
  10. 时间序列分析的基本思路与步骤(入门级,新手必看!!!)