经典算法和OJ网站
一、Online Judge簡(jiǎn)介
Online Judge系統(tǒng)(簡(jiǎn)稱OJ)是一個(gè)在線的判題系統(tǒng)。用戶可以在線提交程序多種程序(如C、C++、Pascal)源代碼,系統(tǒng)對(duì)源代碼進(jìn)行編譯和執(zhí)行,并通過(guò)預(yù)先設(shè)計(jì)的測(cè)試數(shù)據(jù)來(lái)檢驗(yàn)程序源代碼的正確性。
一個(gè)用戶提交的程序在Online Judge系統(tǒng)下執(zhí)行時(shí)將受到比較嚴(yán)格的限制,包括運(yùn)行時(shí)間限制,內(nèi)存使用限制和安全限制等。用戶程序執(zhí)行的結(jié)果將被Online Judge系統(tǒng)捕捉并保存,然后再轉(zhuǎn)交給一個(gè)裁判程序。該裁判程序或者比較用戶程序的輸出數(shù)據(jù)和標(biāo)準(zhǔn)輸出樣例的差別,或者檢驗(yàn)用戶程序的輸出數(shù)據(jù)是否滿足一定的邏輯條件。最后系統(tǒng)返回給用戶一個(gè)狀態(tài):通過(guò)(Accepted,AC)、答案錯(cuò)誤(Wrong Answer,WA)、超時(shí)(Time Limit Exceed,TLE)、超過(guò)輸出限制(Output Limit Exceed,OLE)、超內(nèi)存(Memory Limit Exceed,MLE)、運(yùn)行時(shí)錯(cuò)誤(Runtime Error,RE)、格式錯(cuò)誤(Presentation Error,PE)、或是無(wú)法編譯(Compile Error,CE),并返回程序使用的內(nèi)存、運(yùn)行時(shí)間等信息。
目前有不少在線測(cè)試平臺(tái),這些平臺(tái)提供了很多很好的編程題,當(dāng)然著名的acm中會(huì)有很多難題,如果你想挑戰(zhàn)自己的智力極限,如果你對(duì)編程很有興趣,那么就可以去這些平臺(tái)注冊(cè),然后編程提交,跟其他編程高手一較高下。在線測(cè)試平臺(tái)往往提供多種語(yǔ)言的支持,對(duì)于一道題,你可以用自己喜歡的語(yǔ)言來(lái)編寫(xiě),但是要想排名更前,就得考慮語(yǔ)言的效率問(wèn)題,所以你會(huì)發(fā)現(xiàn)里面的高手多用c或c++。
二、算法和OJ網(wǎng)站
※ The ACM-ICPC International Collegiate Programming Contest(ACM/ICPC)
??? ACM是一個(gè)給全世界高等院校學(xué)生參加的算法程序設(shè)計(jì)大賽,比賽目的在于考驗(yàn)選手臨場(chǎng)邏輯思維和程序編寫(xiě)能力。ACM首先在世界各地舉辦初賽,然后從各個(gè)賽區(qū)選拔表現(xiàn)優(yōu)秀的隊(duì)伍,角逐世界總決賽。
⑴ 西班牙Valladolid大學(xué)Online Judge(UVA)
???? 世界上最大最有名的OJ,題目巨多且雜(2500+),數(shù)據(jù)也很刁鉆,全世界的頂尖高手都在上面。據(jù)說(shuō)如果你能在UVA上AC一千道題以上,就盡管向IBM、微軟什么的發(fā)簡(jiǎn)歷吧,絕對(duì)不會(huì)讓你失望的。
⑵ 俄羅斯Ural立大學(xué)Online Judge(URAL)
???? 也是一個(gè)老牌的OJ,題目不多,但題題經(jīng)典。
⑶ 俄羅斯薩拉托夫國(guó)立大學(xué)Saratov State University?(SGU)
???? SGU是俄羅斯薩拉托夫國(guó)立大學(xué)用于培養(yǎng)ACM選手的訓(xùn)練網(wǎng)站。這個(gè)網(wǎng)站的建成時(shí)期較晚,但隨著比賽的舉行以及新題目的加入,這個(gè)題庫(kù)的題目也日漸豐富。這個(gè)題庫(kù)的一大特點(diǎn)就是OJ功能強(qiáng)大,它不僅使你避開(kāi)了多數(shù)據(jù)處理的繁瑣操作,還能告訴你程序錯(cuò)在了第幾個(gè)數(shù)據(jù)。這一點(diǎn)雖然與ACM的Judge有些出入,但是卻方便了調(diào)試程序。與UVA相比,這里的題目在時(shí)間空間上要求都比較嚴(yán)格,而且更多的考察選手對(duì)算法的掌握情況,所以特別推薦沖擊NOI的選手也來(lái)做一做。
⑷ 全美計(jì)算機(jī)奧林匹克競(jìng)賽Online Judge(USACO)
???? USACO的特點(diǎn)是做完一關(guān)才能繼續(xù)往下做,與前面的OJ不同的是測(cè)試數(shù)據(jù)可以看到,并且做對(duì)后可以看標(biāo)準(zhǔn)解答,所以如果大家剛開(kāi)始的時(shí)候在上面那些OJ上總WA卻找不到原因的話,可以試著來(lái)這里做做,看看測(cè)試數(shù)據(jù)一般是從什么地方陰你的。
⑸ 浙江大學(xué)Online Judge(ZOJ)
???? 國(guó)內(nèi)最早也是最有名氣的OJ,有很多高手在上面做題。特點(diǎn)是數(shù)據(jù)比較刁鉆,經(jīng)常會(huì)有你想不到的邊界數(shù)據(jù),很能考驗(yàn)思維的全面性。
⑹ 北京大學(xué)Online Judge(POJ)
???? 建立較晚但題目加得很快,現(xiàn)在題數(shù)和ZOJ不相上下,特點(diǎn)是舉行在線比賽比較多,數(shù)據(jù)比ZOJ上的要弱,有時(shí)候同樣的題同樣的代碼,在ZOJ上WA,在POJ上就能AC。
⑺ 同濟(jì)大學(xué)Online Judge(TOJ)
???? 其上OJ題數(shù)上不能與ZOJ和POJ相比,推薦這個(gè)OJ的原因是因?yàn)樗侵形牡?#xff0c;這對(duì)很多對(duì)英文不太感冒的兄弟是個(gè)好消息吧。它也因此吸引了眾多高中的ddmm,畢竟他們的英文還差一些,呵呵。。上面的題目也更偏向于高中的信息學(xué)競(jìng)賽一些。
⑻ 杭電科大Online Judge(HDU)
???? 里面不乏好題,培養(yǎng)出的很多牛人,畢業(yè)后就進(jìn)了阿里。
⑼?LeetCode
???? 里面有很編程多面試的題目,可以在線編譯運(yùn)行。難度比較高。如果自己能都做出來(lái),對(duì)面大公司很有幫助。
⑽?TopCoder
???? 該網(wǎng)站功能眾多,其中一項(xiàng)是提供程序設(shè)計(jì)比賽。
⑾?ProjectEuler
???? 該網(wǎng)站專門(mén)提供能用程序計(jì)算出答案的數(shù)學(xué)問(wèn)題,每個(gè)問(wèn)題都會(huì)有對(duì)應(yīng)的解答。
⑿?ACMSolver
???? 這個(gè)網(wǎng)站專門(mén)收集程序設(shè)計(jì)比賽及OJ的最新消息,可以說(shuō)是面面俱到。
⒀?CODEFORCES
???? 喜歡這個(gè)OJ的原因是因?yàn)榭梢钥吹絼e人的代碼,非常棒。
⒁?VirtualJudge
???? 這里面列出了一些常用的OJ,簡(jiǎn)直是一個(gè)大雜燴。
⒂?演算法筆記
???? 這個(gè)網(wǎng)站是我比較喜歡的網(wǎng)站,美中不足的是全是繁體字。
⒃?InterviewStreet
???? Interview Street是幫助知名科技企業(yè)招聘程序員的在線編程挑戰(zhàn)平臺(tái)。
⒄?九度OJ
???? 最近特別火,不解釋。
⒅?ACM之家
???? 很棒,里面有很多很棒的例子,值得學(xué)習(xí)。
總結(jié)
- 上一篇: AndroidWear开发之HelloW
- 下一篇: 推荐的讲解算法的网站、好博客: