演算法筆記 數字dp小結

2021-06-29 03:16:08 字數 726 閱讀 6296

入門ppt

link1:記憶化方式

link2

link3

**1**2

//********************=//

記憶化的數字dp:

通常而言,有四個引數必須 dp( pos, flag, limit )

pos表示當前正在列舉的數字。

flag標誌已經列舉的字首是否某種性質(前面的數字和,是否含有某個數,前乙個列舉的數等等。。),當然flag可以有多個。

limit表示當前是否為上限,有時還會記錄是否有前導0。

相較而言,記憶化搜尋更容易編寫,需要維護的細節更少。

假設要對數字中沒有5的數計數。

int digit[maxn], dp[maxn][flag];

// 在程式最開始初始化一次即可(假設有多個區間需要詢問),想想為什麼

void init()

// flag 是否沒有5

int go (int

pos, int limit, int flag)

if (limit || dp[pos][flag] == -1)

return dp[pos][flag];

}// count [1, x]

int count(int

x) return go (0,

}

演算法筆記 數字dp

前言 當我們遇到某些題目的時候 比如像讓你統計l r這乙個區間內的數字和以及滿足條件的數有幾個這一類的題目 常常會因為區間太大而無法計算。這時候,我們就需要用上我們偉大的數字dp啦 數字dp的實質就是換一種暴力列舉的方式,使得新的列舉方式滿足dp的性質,然後記憶化就可以了。nm這本質上不還是記憶化搜...

DP專題 學習筆記 數字 DP

目錄3.練習題 update 2021 2 23 最近作者發現數字 dp 的 f 陣列初始化有問題,導致 出現了根本性錯誤 原理不變 現在已經糾正,對各位讀者造成的困擾深表歉意。數字 dp,是一種 dp 廢話 專門用於數字統計類問題。這種問題首次接觸可能會有些難理解,但是練過幾道題之後就會掌握套路了...

數字DP小結

download.csdn.net detail u012959992 8892265 一般是求小於等於數字n的某些特徵數字個數,或者是區間 l,r 的之間的某些特徵數字個數,後者一般可以轉換成求差的方式來做。數字處理函式int f int num return dfs pos,s true dig...