From 3edc8d2aecd4aa027b90588b86e51d41f5de9a3e Mon Sep 17 00:00:00 2001 From: Trisolaris HD <36555123+TrisolarisHD@users.noreply.github.com> Date: Wed, 27 Mar 2019 15:40:38 +0800 Subject: [PATCH] Update memo.md --- docs/dp/memo.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/dp/memo.md b/docs/dp/memo.md index 6d7297c8..dbf859bb 100644 --- a/docs/dp/memo.md +++ b/docs/dp/memo.md @@ -4,7 +4,7 @@ ## 记忆化搜索是啥 -好,就以[洛谷 P1048 采药](https://www.luogu.org/problemnew/show/P1048)为例,我不会动态规划,只会搜索,我就会直接写一个粗暴的[DFS](/search/dfs): +好,就以[「Luogu P1048」采药](https://www.luogu.org/problemnew/show/P1048)为例,我不会动态规划,只会搜索,我就会直接写一个粗暴的 [DFS](/search/dfs): - 注:为了方便食用,本文中所有代码省略头文件 @@ -74,7 +74,7 @@ int main() { 想一想也不奇怪,因为我们的 dfs 没有依赖任何外部变量。 -旁白:像 $tcost[103]$ , $mget[103]$ 这种东西不算是外部变量,因为她们在 dfs 过程中不变。 +旁白:像 $tcost[103]$ , $mget[103]$ 这种东西不算是外部变量,因为它们的值在 dfs 过程中不会被改变。 然后? @@ -153,13 +153,13 @@ int main() { ```cpp int dfs(int i, int j, int k) { - 边界条件 + // 判断边界条件 if (mem[i][j][k] != -1) return mem[i][j][k]; return mem[i][j][k] = dfs(i + 1, j + 1, k - a[j]) + dfs(i + 1, j, k); } int main() { memset(mem, -1, sizeof(mem)); - 读入 + // 读入部分略去 cout << dfs(1, 0, 0) << endl; } ``` @@ -176,7 +176,7 @@ int main() { 举例: - $dp[i] = max\{dp[j]+1\}\quad 1 \leq j < i \text{且}a[j]1$ 个点的情况。 @@ -245,7 +245,7 @@ dp 状态很显然: ## 模板 -```c++ +```cpp int g[MAXN]; int f(传入数值) { if (g[规模] != 无效数值) return g[规模]; -- 2.11.0