卿è§åæ¯ä¸ç§åæ²»(Divide&Conquer)çææ³ãå¨å°å¤§é®é¢å解为å°é®é¢çåæ²»è¿ç¨ä¸ï¼ä¿å对è¿äºå°é®é¢å·²ç»å¤ç好çç»æï¼å¹¶ä¾åé¢å¤çæ´å¤§è§æ¨¡çé®é¢æ¶ç´æ¥ä½¿ç¨è¿äºç»æã
éç¨äºå¨æè§åçé®é¢ï¼éè¦æ»¡è¶³æä¼åç»æåæ åææ§ä¸¤ç§æ åµã
卿è§åæéè¦ç两个è¦ç¹å¨äºæ¾å°ç¶æåç¶æè½¬ç§»æ¹ç¨ï¼ä¹å°±æ¯éæ¨å ³ç³»ã
妿ä¸è®°å½æ¯ä¸æ¥çç»æï¼å¨æè§åçæ¶é´å¤æåº¦ä¸Brute Forceæ å¼ã卿è§åå®è´¨ä¸æ¯ä¸ç§ä»¥ç©ºé´æ¢æ¶é´çæ¹æ³ï¼éè¿åå¨è¿ç¨ä¸æ¯ä¸æ¥éª¤çç¶ææ¥é使¶é´å¤æåº¦ã
举个æ å æä»¬ä»¥LeetcodeçClimbing Stairsé¢ç®ä¸ºä¾ï¼
å½åä½ç½®ä¸ºç¬¬i级å°é¶æ¶ï¼æä¸¤ç§éå¾å°è¾¾å½åçç¶æï¼
i-1级å°é¶èµ°ä¸æ¥èæ¥i-2级å°é¶èµ°ä¸¤æ¥èæ¥å æ¤ï¼å°è¾¾ç¬¬i级å°é¶çéå¾ä¸ºå°è¾¾ç¬¬i-1级å°é¶åå°è¾¾ç¬¬i-2级å°é¶çé徿°éä¹åãæä»¬å¯ä»¥å¾åºå¦ä¸çç¶æè½¬ç§»æ¹ç¨ï¼
``` dp[i] = dp[iâ1] + dp[iâ2]
```
æç §ä¸é¢çç¶æåä¸éå½ï¼å¾å°åå§ç¶æï¼
``` dp[3] = dp[1] + dp[2]
```
å°dp[1]è§ä¸ºç¬¬ä¸çº§å°é¶ï¼æä¸ç§éå¾å¯ä»¥å°è¾¾ï¼ä»0èµ°ä¸æ¥ï¼
å°dp[2]è§ä¸ºç¬¬äºçº§å°é¶ï¼æä¸¤ç§éå¾å¯ä»¥å°è¾¾ï¼ä»0èµ°ä¸¤æ¥æè
èµ°ä¸¤ä¸ªä¸æ¥ï¼
å æ¤åå§ç¶æå¦ä¸
``` dp[0] = 0 dp[1] = 1 dp[2] = 2
```
æç
§ç¶æè½¬ç§»æ¹ç¨æ±è§£dp[n]å³å¯ã
æçè§£æ³åç¬è®°å¦ä¸ï¼https://nyan.im/posts/4078.html#Climbing%20Stairs(Easy)
åèèµæ ç®æ³-卿è§å Dynamic Programming–ä»èé¸å°èé¸ – æå¾æçç¸ – CSDNå客
卿è§å · ç¬è¯é¢è¯ç¥è¯æ´ç