前段時間總結

2021-06-06 19:36:12 字數 1847 閱讀 8862

咱先來重頭戲,開門見山的說……

桶式排序的思想,推廣之後得到雜湊查詢,以及對應雜湊函式的功能。將乙個整數、字串或者其他的資料通過雜湊函式對映

(單射,但不一定是滿射) 到一根自然數的數軸上。訪問都通過公式

來得到所在的位址,並完成操作。如此,則無論資料規模多大,只要還在雜湊函式的定義域之內(當然還得有雜湊函式的值域範圍那麼大的儲存空間……)那麼就可以進行常數時間的訪問。

動態規劃,我已經無法想象動態規劃到底神奇到什麼地步了。判斷

問題是否已計算過(此處有兩種方法,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面通知,實在不敢賭一定成功,所以答應了北京的職位。一方面向先前幫助過我的前輩表示感謝,另一方面也藉此立證一心一意認真學習 工作。實習的機會感覺還是很難得的,一方面導師肯答應 雖然有很多要求,比如...