Is page par yeh assume kiya gaya hai ki aapne kuch bhi nahi dekha. Parent note padhne se pehle, aapko har woh symbol khud ka banana hoga jo woh aap par phenkta hai. Hum unhe ek ek karke banate hain, har ek earn karke, tabhi agla use karta hai.
Ek array bas boxes ki ek row hoti hai, jisme har ek box ek number rakhta hai, aur har ek ko ek whole-number position se label kiya jaata hai jise index kehte hain.
Picture: figure mein red box number 2 hai; p[2] woh number hai jo wahan rehta hai.
Topic ko kyun chahiye: rod cutting ek price listp[1..n] store karta hai jahan p[i] length i ke rod-piece ki price hai. Indexing ke bina hum symbols mein "length-3 piece ki price" nahi keh sakte.
Picture:1 se n tak filled bar wali ek number line; andar har tick i ki ek allowed value hai.
Topic ko kyun chahiye: har DP recurrence bahut saare choices try karta hai — "pehla cut length 1 ho sakta hai, ya 2, ... n tak". Range batati hai kaun se choices legal hain.
Picture: ek box jisme arrows andar jaate hain (inputs) aur ek arrow bahar aata hai (jawab).
Kyun ek input vs. do vs. do-with-a-flag:
r(n) — rod revenue ek cheez par depend karta hai: rod ki length.
D(e,f) — egg-drop cost do cheezon par depend karti hai: eggs bacha eaur floors bacha f. Koi bhi badlo aur ek alag subproblem hai.
f(v,0) / f(v,1) — tree value node vaur ek yes/no flag (0 = "v excluded", 1 = "v included") par depend karti hai. Flag isliye hai kyunki parent ka decision jaanna chahta hai ki child ne kya decide kiya.
Picture: shrinking problems ki ek staircase; sabse neeche red step woh base case hai jo seedha answer return karta hai.
Topic ko kyun chahiye: base case ke bina shrinking kabhi nahi rukta. Parent ka har recurrence ek general rule ko base cases ke saath pair karta hai — yeh required hai Recursion and Memoization se milne se pehle.
"Bottom-up" kyun: agar aap r[0],r[1],r[2],… order mein fill karo, toh jab aap r[j] compute karte ho har r[j−i] jo use chahiye pehle se ho chuka hai. Koi recursion ki zaroorat nahi — bas ek ordered fill.
Topic ko kyun chahiye: DP ka poora point speed hai. Rod cutting O(n2) hai (har n lengths ke liye, n tak first cuts try karo). Tree DP O(n) hai (har edge ek baar touch hota hai). Is tag ke bina aap jeet appreciate nahi kar sakte.
Picture: red node root hai; arrows neeche uske children ki taraf point karte hain; shaded blob ek subtree hai.
Kyun no cycles matter karta hai: kyunki koi loops nahi hain, har subtree ek alag, independent subproblem hai — exactly woh condition jo DP ko chahiye. Yeh Tree Traversal (DFS) se connect hota hai.
Left side ki har cheez machinery build karti hai; sab parent note DP problems mein funnel hota hai. Yahan se aap Dynamic Programming, Recursion and Memoization, Knapsack Problem, aur Greedy Algorithms aur Binary Search ke saath contrasts ke liye ready ho.
Right side cover karo aur dekho kya aap ise zor se bol sakte ho.
p[i] ka kya matlab hai, aur index value se alag kaise hai?
p[i] woh number hai jo box labelled i mein stored hai; index i ek address hai (e.g. "length"), value p[i] content hai (e.g. "price").
1≤i≤n kya describe karta hai?
i ke legal choices ka set: har whole number 1 se lekar n tak inclusive.
Words mein, max, min, ∑ ek range par kya karte hain?
max = sabse bada chunno, min = sabse chota chunno, ∑ = sab jodo.
Egg drop ko DONO min aur max kyun chahiye?
Aap apne drop-floor choice par min karte ho; nature worst-case outcome par max karta hai — yeh do-player move hai.
D(e,f) ke do inputs kyun hain lekin r(n) ka ek?
Rod ka answer sirf length par depend karta hai; egg-drop cost dono eggs bacha aur floors bacha par depend karti hai — koi bhi badlo aur yeh ek naya subproblem hai.
Base case kya hai aur kyun required hai?
Woh trivial input jiska answer seedha pata hai (e.g. r(0)=0); iske bina, recursion hamesha shrink hota rehta hai aur kabhi return nahi karta.
Optimal substructure ek sentence mein batao.
Poore ki best solution uske parts ki best solutions se assemble hoti hai.
Memoization kaun sa problem solve karta hai?
Overlapping subproblems — yeh har subproblem ka answer ek baar store karta hai taaki woh kabhi recompute na ho, exponential ko polynomial mein badalta hai.
O(n2) ka intuitively kya matlab hai?
Kaam n squared ki tarah grow karta hai; input double karo aur aap approximately chaar guna kaam karte ho.
Tree DP ko post-order DFS kyun use karna chahiye?
Parent ki value uske children ki values se bani hai, toh har child apne parent se pehle finish hona chahiye.
Ek node ko DO states f(v,0) aur f(v,1) kyun chahiye?
Kyunki parent ka choice depend karta hai ki v include hua tha ya nahi; dono store karna parent ko sahi se choose karne deta hai.