2023年寒假第一周筆記(一)DP

2021-10-17 08:09:43 字數 1562 閱讀 6453

dp(動態規劃)思想:

簡單來說就是把完整的乙個問題,按照題目要求分解成多個子問題的問題序列,在每乙個子問題中尋找到符合題目要求的最有解,再從子問題序列中尋找符合題目要求的一段序列,以此為答案。

那麼什麼情況下使用dp呢?

使用dp(動態規劃)的三個要求:

1、最優子結構:可以乙個整問題分解成乙個個子問題的最有解求解過程的。

3、無後效應:呼叫子問題最優解時,子問題的最優解不發生改變。

其實上面的三個要求,除了第乙個其他我都暫時還不能理解,三個要求來自第二位博主的總結,但總體來說要以第乙個為主。

那麼如何更快的掌握dp(動態規劃)?

我所看的兩位博主對於dp的描述都非常的詳細,但他們都提到,過多的解釋沒有作用,沒有直接來例題理解的透徹,因為是筆記我就只記兩個例題,總結就是要多刷題才能掌握dp,下面我上兩題從兩位博主那挑的題:

例題1:

經典的數字金字塔;(這題非常經典,方便快速入門dp)

輸入格式

第一行包含整數n,表示數字三角形的層數。

接下來n行,每行包含若干整數,其中第 i 行表示數字三角形第 i 層包含的整數。

輸出格式

輸出乙個整數,表示最大的路徑數字和。

資料範圍

1≤n≤500,

−10000≤三角形中的整數≤10000

輸入樣例:57

3 88 1 0

2 7 4 4

4 5 2 6 5

輸出樣例:

30acwing898. 數字三角形

例題2:

最長公共子串行;

給定兩個長度分別為n和m的字串a和b,求既是a的子串行又是b的子串行的字串長度最長是多少。

輸入格式

第一行包含兩個整數n和m。

第二行包含乙個長度為n的字串,表示字串a。

第三行包含乙個長度為m的字串,表示字串b。

字串均由小寫字母構成。

輸出格式

輸出乙個整數,表示最大長度。

資料範圍

1≤n,m≤10001≤n,m≤1000

輸入樣例:

4 5

acbd

abedc

輸出樣例:
3
dp型別的題目還有很多,類似於石頭,揹包…等等一系列問題,學的還少,就不給自己的複習添亂了。

因為是第一次記筆記,引用的地方很多,自己總結的東西很少,不過在看兩位博主老師的文章時,因為知識的不足,很多地方看不懂,但也給了我學習的方向。

總結:下次需要學習的知識點有

1、分治演算法(第一位博主老師的文章中有分治和dp的區別,因為沒有學分治,暫時不理解,等到學習分治的時候我再去看一遍,加深理解)

2、貪心演算法(雖然粗略的學習了貪心演算法,但掌握不夠,在第一位博主老師的文章中略微看懂一些,但還不夠,需要更深度的學習後進行對比掌握)

3、lcs問題(這好像是一類問題,不是演算法,需要多刷才能看懂)

4、遞迴(這個很多地方都要用到,需要多學多刷多練)

以上是對我這次學習的總結,以及對下次學習的方向 ,寫這篇文章,方便我複習的時候快速建立方向和知識的回顧。最後感謝兩位博主的文章。

Boolan STL 第一周筆記

容器是用來儲存資料的,資料可以試使用者自定義的類,也可以試預定義的型別。c 中的容器主要使用有array vector list set map等。stl中的容器裡都有分配器,在宣告乙個容器的模板第二個引數就是分配器。分配器是用來給容器分配記憶體的,在一般情況下,使用預設的分配器即可。在stl中要實...

Boolan C 課程第一周筆記

第一周 20170407 類 帶指標 1 不帶指標 object based 基於物件 單一物件 object oriented 物件導向 多個有關聯的物件 語言學習 語言 標準庫 標頭檔案寫法 防衛式宣告 ifndef complex define complex 前置宣告 類的宣告 類的定義 e...

Boolan c 學習第一周筆記

1.一種基於物件 object based 這種是單一的類的設計 一種物件導向 object oriented 多重class的設計 對於類中的變數和函式而言,資料有很多份但是函式只有乙份。2.標頭檔案的正規寫法 ifndef 頭檔名 define 頭檔名 endif 採用了防衛式宣告。3.c 中的...