現在dp的難點在於,理解遞迴方程不難,但是如何據此設計出符合題意的正確的初始條件?
不同的初始條件對應不同的問題。如01揹包中的是恰好裝滿揹包還是不超過揹包最大容量,可以通過初始化解決。
自己在設計演算法的時候,如何設計出符合題意的初始條件和遞迴過程。這個過程全靠腦子復現一步一步的步驟是很慢的。因此,需要有數學工具來支撐。我猜這個數學工具是數學歸納法,但是如何使用這個數學工具呢?
dp問題,設計出正確的初始條件和遞迴過程,然後使用自頂向下的和自底向上的不同的實現方式,對重複的計算過程進行記錄,給出複雜度低的演算法實現。
遞迴程式設計的正確性,也應該是要靠數學工具來保證其正確性的。
解題中最重要的是你想得到的結論是不是該是的那些結論。
顯而易見與真知灼見水火不容。
一般拿到乙個題目的最樸素的想法,一眼能不能看出**怎麼寫?不好意思,要是一眼看得出,怎麼選拔人才。不說天才,哪怕是神仙,沒做過原題,也不敢說一眼能看出,就是同型別的題目,也得推一推算一算。
做演算法題,注重怎麼推怎麼算。怎麼由子問題的解擴充套件到大的問題的解。
leetcode一些題的想法
167.two sum ii input array is sorted 這道題是給定乙個陣列和乙個數字a,再陣列中查詢兩個數其之和等於a,兩個數不會取同乙個數,數必定有解,陣列有序。暴力的是兩層for迴圈,複雜度n方,然後改為了折半查詢,平均複雜度是nlogn。比較優化的是利用兩個數之和的數學關係...
關於演算法的一些想法
關於演算法的一些想法 演算法是程式設計的靈魂。不可想象,沒有演算法的程式會是乙個高水平的程式。窗體的形狀 大小涉及到演算法 控制項自身以及與其它控制項的諸多關係需要計算 字串的查詢 擷取和替換更離不開它了 總之,從小到乙個按鈕的安放位置,大到 呀?我不知道 無不與演算法息息相關。演算法或是很簡單,或...
關於演算法的一些想法
關於演算法的一些想法 演算法是程式設計的靈魂。不可想象,沒有演算法的程式會是乙個高水平的程式。窗體的形狀 大小涉及到演算法 控制項自身以及與其它控制項的諸多關係需要計算 字串的查詢 擷取和替換更離不開它了 總之,從小到乙個按鈕的安放位置,大到 呀?我不知道 無不與演算法息息相關。演算法或是很簡單,或...