對于這個(gè)問題,如果是參加過一些軟件競賽的同學(xué)應(yīng)該都是知道的,ACM模式與核心代碼模式是在編程學(xué)習(xí)和競賽中常見的兩種代碼模式。兩種模式各有特點(diǎn)和應(yīng)用場景,下邊就分開介紹下。
首先是ACM模式。
ACM模式(Association for Computing Machinery模式)通常用于編程競賽和技術(shù)面試,要求實(shí)現(xiàn)題目過程中所有的輸入和輸出觸發(fā)方式必須嚴(yán)格按照題目的描述進(jìn)行。
用戶需要自己構(gòu)造輸入數(shù)據(jù)格式,將數(shù)據(jù)填充到需要處理的容器中,并控制返回的數(shù)據(jù)格式。
OJ(Online Judge)系統(tǒng)不會(huì)提供任何代碼,包括頭文件、庫函數(shù)等都需要自己編寫。
從上述特點(diǎn)中其實(shí)就很清晰的知道了ACM模式的特點(diǎn),這種模式比較鍛煉開發(fā)者的全面編程能力,包括輸入輸出處理、異常處理等。
另外這種模式提高了代碼的可移植性和健壯性,因?yàn)樾枰幚砀鞣N可能的輸入情況。
以下是一些國內(nèi)采用ACM模式的知名網(wǎng)站:
網(wǎng)站名稱 | 網(wǎng)站鏈接 | 備注 |
---|---|---|
浙江大學(xué) Online Judge (ZOJ) | http://acm.zju.edu.cn | 國內(nèi)最早也是最有名氣的OJ,題目多樣,數(shù)據(jù)刁鉆,能考驗(yàn)思維的全面性。 |
北京大學(xué) Online Judge (POJ) | http://acm.pku.edu.cn/JudgeOnline/ | 題目更新迅速,舉辦在線比賽較多。 |
哈爾濱工業(yè)大學(xué) Online Judge (HOJ) | http://acm.hit.edu.cn/hoj/ | 提供了豐富的編程競賽題目和在線評測服務(wù)。 |
杭州電子科技大學(xué) Online Judge (HDUOJ) | http://acm.hdu.edu.cn/ | 題目涵蓋多個(gè)編程領(lǐng)域,適合不同水平的選手練習(xí)。 |
同濟(jì)大學(xué) Online Judge (TOJ) | http://acm.#edu.cn/ | 提供編程競賽題目和在線評測服務(wù),但需注意其可用性可能隨時(shí)間變化。 |
廈門大學(xué) Online Judge | http://acm.xmu.edu.cn/JudgeOnline/ | 提供了多種編程語言的選擇,適合不同需求的選手。 |
中山大學(xué) Online Judge | http://202.116.77.69/sicily | 提供在線編程競賽和算法訓(xùn)練平臺(tái)。 |
中國科學(xué)技術(shù)大學(xué) Online Judge | http://acm.ustc.edu.cn/ | 題目難度適中,適合算法學(xué)習(xí)和訓(xùn)練。 |
??途W(wǎng) | https://www.nowcoder.com/ | 提供了豐富的編程競賽題目和在線評測服務(wù),同時(shí)也有面試題庫等功能。 |
洛谷 | https://www.luogu.com.cn/ | 面向信息學(xué)競賽選手和編程愛好者,提供題目訓(xùn)練和在線評測服務(wù)。 |
核心代碼模式
核心代碼模式是指只需要寫出算法的核心邏輯部分,不需要考慮輸入和輸出的格式,也不需要寫出程序的頭文件、main函數(shù)等其他部分。
適用于專注于算法思想和實(shí)現(xiàn)細(xì)節(jié)的學(xué)習(xí),很多在線判題系統(tǒng)(如LeetCode)采用這種模式。
用戶只需編寫滿足題目需求的類或函數(shù),無需關(guān)注程序的輸入輸出處理。
這種模式簡化了代碼編寫過程,使開發(fā)者能夠更專注于算法本身的實(shí)現(xiàn)。在線判題系統(tǒng)通常會(huì)自動(dòng)處理輸入輸出,提高了編程效率。
這個(gè)國內(nèi)使用比較多的網(wǎng)站就是LeetCode。
國際版:https://leetcode.com/
中文版:https://leetcode-cn.com/
兩者對比:
核心代碼模式 | ACM模式 | |
---|---|---|
定義 | 只需編寫算法核心邏輯,無需關(guān)注輸入輸出 | 需要嚴(yán)格按照題目描述處理輸入輸出,包括數(shù)據(jù)格式和觸發(fā)方式 |
特點(diǎn) | 簡化編程過程,專注于算法實(shí)現(xiàn) | 全面鍛煉編程能力,包括輸入輸出處理 |
優(yōu)勢 | 提高編程效率,便于算法學(xué)習(xí) | 增強(qiáng)代碼可移植性和健壯性,提升全面編程能力 |
應(yīng)用場景 | 在線編程平臺(tái)、算法學(xué)習(xí) | 編程競賽、技術(shù)面試 |
核心代碼模式更適合于算法學(xué)習(xí)和練習(xí)階段,而ACM模式則更適合于編程競賽和技術(shù)面試等需要全面編程能力的場景。
未完待續(xù),持續(xù)更新!以防后邊找不到可以點(diǎn)贊收藏下!