C++在acm里的優勢相比其他語言有多大?
謝謝回答的各位大佬們!
目前cs本科在讀,大一學了java大二學了python,因此一直用不慣C/C++, 雖然也能讀懂但總是覺得java方便很多。。。
最近在刷各種編程競賽題,打算後面去參加一些編程競賽,想請教一下相關領域的大佬是否在真實比賽中會有:同樣演算法,但是c++ AC了而java TLE的情況,還是說演算法才是王道,只要演算法對不論什麼語言理論上都能AC。。。
順便多問一個問題: 請問在completive progrmamming這條路上(針對Codejam, tc, cf等等比賽..)光用java, python是否也走得下去呢。。。謝謝!
謝謝!
最大的優勢在於用的人多,學習別人代碼方便。在中國,java選手可能只有千分之一。你覺得java方便,可能是先入為主吧,我倒覺得c++很方便啊。c++唯一劣勢是沒有大數。
我認為C++是最適合演算法競賽的語言,原因有:
1. 性能優秀,靜態類型,沒有GC。基本上寫完演算法你就可以估算出運行時長
2. 有完善的數據結構庫,以及足夠的抽象能力
3. 語言很大眾,學校一般都會教C++
java基本沒用過 時常拿python寫點小程序
java又丑又慢 真心不想用python強大之處是各種第三方庫 拿來寫演算法題…感覺怪怪的 而且也不如cpp快cpp肯定是繞不過去的 贊同高票答案1.如果能做到非常熟悉地用cpp實現各種常見演算法和數據結構 那麼看他人的ac代碼會非常輕鬆 甚至比看偽代碼和題解還輕鬆
本弱雞最近刷cf 不會的題都懶得找題解 直接看別人的代碼 2.而且acm是三個人的比賽 要找兩個主用java的隊友 想必很難吧 大家都用一種語言才能互相debug啊3.各種主流演算法書基本都是cpp實現啊
總而言之 搞acm 是離不開cpp的 而且cpp用起來真的很順手 一點不比python差
光用Python或java能否走的下去?
答曰:能,從經驗上講我還沒見過C++能AC但是java完全不行的情況。但是用高級語言這條路會不好走,事實上比賽里一般用C++高級特性的人都很少,一般都是用C風格的C++。
所以說,之前走這條路的人少,有很多坑你就得自己去踩一遍才行。不像其他人可以隨便百度一下前輩的博客就解決問題。
做比賽的時候,有時候數據量大了用java觸發full GC是很蛋疼的事情,更多的選手還是願意讓內存在自己的掌控手裡。尤其大多數情況下用C++打比賽根本不用管內存,泄露了就泄露了,一般不會MLE。腦子更靈活,做事效率會更高,解決問題能力更強,可以在最後發現自己真的無法在前進了,退下來寫業務代碼
就我參加acm的時候,很多年前。其實java的優勢很大,很多比賽的組織者由於先入為主覺得java很慢,然後將限時設置為c++ 2倍,甚至5倍,然後可能有些變態優化不用做都可以過。當然如果你遇到組織者先入為主在比賽限制java版本到1.4可能就抓瞎了。
C++?難道不都是C with STL么?
一,只用java,python一定走得下去,只要能堅持二,演算法對也有可能因為寫太爛被卡常數。java慢而沒被卡的原因是...java給的時限比較長啊!
瀉藥...
我比較菜啊 入坑一年左右 也只會c c++ java的一點點hhhhhc++比java快是的吧 但是java有大整數類c++比c方便是的吧 可以用stl..但是手寫更靈活.才疏學淺..只有這一點點經驗至於用別的行不行..抱歉不知道...C++的優勢幾乎沒有吧。
熟練掌握特定一個語言比盲目使用C++要來得好。
Petr也是Java選手 (逃
推薦閱讀:
※如何入門CDQ分治?
※利用C++ template,請問我該如何設計這個向量類(Vector)?
※如何寫個程序找出現有C++工程里的所有函數?
※為什麼int型的負數會比字元串函數length()返回的值大?
※C++ 用輸入的變數作為數組長度是壞習慣嗎?