我選擇閱讀的數是《程式設計之美》,自己的程式設計能力和算法了解尚且粗淺,看起來感覺問題很吸引人但是書上提到的想法會比較難去了解,在讀書的過程中
我也發現現在我思考問題的時候往往也隻是偏向于普通的解法而不能再優化上有所多思,類似的書籍還是能幫助自己提升這方面的能力,是以多多益善。
讀書的時候自己也會有很多不了解的問題,有的查閱相關文字能有所深入,有些問題我也進行了一些擴充,也就有了下面的一些記錄:
1.在光影切割問題上,通過光線的條數和交點的個數可以得出被瓜分的塊數,但是如果深入的想到,如果不是直線來瓜分一片區域,是一個折線(貌似角度
可以變化,那麼可以分成多少塊)?
在查閱相關資料後,我發現這個和直線的情況其實是相似的。每加入1條彎曲線,就像加入了2條直線,隻是這“兩條”直線在交點處沒有延伸,是以導緻了
區域的合并(3變1),每加入1條新彎曲線,在新增加區域的數量中都要至少減去2。同時,如果把拐點地放到一個開區域,使得隐去的直線不會與原來的直線
相交,我們隻會減少2個區域,是以也就是說,新彎曲線增加的區域數為2n – 2(先像2條直線一樣考慮區域的剖分,得到2n,再考慮區域的合并,得到-2)Zn
= Zn-1 + 2n - 2,遞歸也就能得出所求問題的解法。(新的想法都可以借鑒從之前的經驗,這也是一種創新的源泉)
2.在高效率的安排活動的一章中,如果可以用的總時間固定而且隻有少于活動個數的場地安排活動(活動時間會有互相沖突),應該如何安排活動使得每個人
能夠參加的活動的總和最大?
我覺得這個涉及到貪心的算法但是比較複雜,網上有對于單個的最優化的思路,但是綜合每一個人的需求,似乎還得複雜一些,貪心的思路是否還能擴充一下?
3.在翻烙餅的一章中,如果在它翻轉的基礎上我們可以作弊一次,比如說可以移動中間夾着的一個烙餅,那麼我們可以使翻轉完成的次數減少多少次?能否能有
一個最優的作弊方法?這個問題網上好像沒有查到= =,希望高人解答思路、
4.在cpu的占用一章中,我們通過調節cpu的占用率的舉措,在實際的電腦行為中,我們可以通過控制程序來平滑cpu的使用率避免cpu的峰谷變化過快。那麼我們
可以實作一個軟體,能夠針對不同的cpu運算調節其忙、閑比提高其效率達到适應性強的效果呢?對于多cpu的電腦,在忙、閑比的調節上以及程序的配置設定上又有怎樣
的不同呢?
5.在第一遍讀完這本書後,我有了很大的啟發,一個問題的解決不是結束,我們可以從中得到更多的問題,但是在解決這些問題上,我們也可以借鑒之前的解法加
以變換來解決問題,是以這告訴了我們舉一反三的重要性以及發現問題解決問題的思路。
問題都是從實際中得到的,我們要學會發現問題,學會借鑒方法,就能有一定的突破。解決了問題不是最好的,我們要做的也就是發現更多的問題,并且得到更好
的解決辦法,往往優化比解題更能提升我們的能力。