咱先來重頭戲,開門見山的說……
桶式排序的思想,推廣之後得到雜湊查詢,以及對應雜湊函式的功能。將乙個整數、字串或者其他的資料通過雜湊函式對映
(單射,但不一定是滿射) 到一根自然數的數軸上。訪問都通過公式
來得到所在的位址,並完成操作。如此,則無論資料規模多大,只要還在雜湊函式的定義域之內(當然還得有雜湊函式的值域範圍那麼大的儲存空間……)那麼就可以進行常數時間的訪問。
動態規劃,我已經無法想象動態規劃到底神奇到什麼地步了。判斷
問題是否已計算過(此處有兩種方法,1.特殊值判斷;2.新增 flag 標誌),如果計算則直接返回結果,否則,計算,再儲存
已計算的結果,從而達到避免重複計算
的目的。簡單而又容易理解的思想,但是達到的功能或者說對效率(時間)的提公升卻令人難以想象。甚至能夠直接把指數級的問題降到幾乎線性的地步!
以上兩個都是很神奇的方法,都能讓程式的效率直線提高。那麼現在總結一下這兩個方法的共同點:空間換時間
!無論是雜湊還是動態規劃,經常都需要很大的儲存空間。(前者用於保證能夠包含所有可能取值,後者用於儲存所有解。)很明顯的,計算機想告訴我們 付出才有回報……所以我們必須在使用空間換時間的思想來解決問題時必須考慮得失
,得大於失還是失大於得?或者採取一些折中的辦法(比如動態規劃中只對經常需要用到的結果進行儲存,其他的不儲存或者計算難度較大的進行儲存而其他的不儲存)?
除此之外,樹的中序遍歷與函式的執行棧實在是太相似了,令人浮想聯翩啊!
還有,線性表是每個元素只有乙個後繼(不討論頭尾,後同),而樹是每個元素有一到多個後繼,而圖是每乙個元素都有一到多個前驅和後繼……莫非有著某種內在的聯絡?
kmp 的不回溯的性質看上去的確不錯啊,尤其是在對硬碟什麼的外存進行操作的時候……不過據說更神奇的 sunday 演算法是什麼?
嗯,那麼接下來就上一些題目中學到的東西吧……
以下請參考 felix021 / answer 的**……
1301:
在達到十萬數量級的輸入輸出時(該題中應》= 200,000),scanf()與cin之間的速度差異體現較大(該題中為40ms),而且所占用的記憶體也少很多(該題中將近200kb)。
1064:
在輸入資料變化範圍較小 時(其實百萬之內的自然數都是可以接受的),可以採用桶式排序的思想來解決問題,此時無論是去重還是排序都是很好的。
1047:
與1301來比較,有些不同的地方,有兩組序列,輸入的 序列長度也夠小 ,所以用o(n*m)的方法可以通過。
1314 & 1171:
動態規劃的神奇究竟到了什麼程度?!
1002:
sizeof 的返回值是 size_t 型,而一般有: typedef unsigned int size_t,所以要注意輸出型別,另外,當-1 與 size_t(unsigned int)型別比較(或者進行其他運算)時 -1 會被轉換為乙個很大的數(與機器相關,2^n - 1,n是指 unsigned int 型別的位數),此處很難檢查出來。
1008:
printf 的引數個數可變(包含stdarg.h後,使用巨集可以做到),很值得考慮,特別的:當只有乙個格式串時是可以直接輸出的(printf("a test!\n"); 輸出如下:a test!)。
1032:
printf 輸出小數時若保留 n 位小數,是四捨五入的(如:printf("%.2lf %.3lf\n", 1.2345678, 1.2345678); 輸出如下:1.23 1.235)。
1064:
使用鍊錶時要特別注意空表時的操作。一旦在某一步處理成為空表之後,一定要記得將head和tail初始化為null,最好的辦法就是寫碼的時候注意程式內部的邏輯性、關聯性。如果free的時候出錯出現 heap corruption detected 很有可能是申請的空間型別與實際的不符。
前段時間讀了些關於SOCKET的資料
前段時間讀了些關於socket的資料 感覺以前用vb寫的 木馬都是小兒科 不過筆者用vb開發木馬時還在讀高二,呵呵還是可以理解的 於是決定用socket親自實踐下真正的木馬 先做伺服器部分 按照流式套接字規範 建立本地套接字 繫結埠 非同步選擇機制wsaasyncselect 產生你感興趣的事件訊息...
mysql查詢前段時間 Mysql 查詢某一段時間
朋友問我時間查詢的的sql,閒下來統計了一下,應該回滿足需求的,特殊的查詢暫時沒想到。今天select from表名whereto days 時間欄位名 to days now 昨天select from表名whereto days now to days 時間欄位名 1 近7天select fro...
找到實習了,感謝ITeyer前段時間的幫助
聽前輩的話在看 的同時又投了幾個簡歷,上星期一輪面試,北京ibm cstl收到offer,上海emc收到2面通知,實在不敢賭一定成功,所以答應了北京的職位。一方面向先前幫助過我的前輩表示感謝,另一方面也藉此立證一心一意認真學習 工作。實習的機會感覺還是很難得的,一方面導師肯答應 雖然有很多要求,比如...