<progress id="uuezx"></progress>
<th id="uuezx"></th>
  • <li id="uuezx"><acronym id="uuezx"><cite id="uuezx"></cite></acronym></li>

    聊聊技術經驗:那些年你在編程中踩過哪些大坑?

    循環輸入輸出處理常見問題

            1、為什么需要循環輸入輸出:通常來說OJ對于每道題里面有.in和.out文件,分別表示測試數據的輸入和輸出。如果某些編程題的所有數據都只做在一個.in和一個.out中,這樣就會變成多組測試了,所以需要提交的代碼中循環處理。

            2、處理方法:其實這個問題可以避免,就是編程題后臺每個樣例做一組對應的.in和.out文件,這樣就變成單組測試,代碼就不需要循環處理,但是平時練習的題目質量不一,這個問題都會出現。

            代碼里面循環處理了即使是單組測試也會完全沒問題,所以為了偷懶,可以全寫成循環處理。

            3、還有一個坑:如果測試數據是多組的,但是恰巧你代碼里面需要些標記數組,map,set等,在循環內一定記得清空,不然可能會產生前面的測試樣例影響了后續數據的答案。

     

            對于各種語言的一些基本知識

            1、出題人通常會使用C/C++編寫標程,數據也是由標程制造的,所以使用跟出題人一樣的語言會比較穩妥。

            2、C/C++效率比較高,通常來說一般OJ對于一道題目的時限限制會區分C/C++和其他語言,通常處理方式是假設C/C++時限是1s,其他語言就會給2倍時限,甚至更多。

            3、關于cin cout和scanf printf。做題的時候盡量使用scanf printf。下面告訴一個小常識,不要驚訝:在數據量比較大的情況下cin cout比scanf printf慢挺多。一旦遇到大數據量,光是讀入就有可能跪掉。你或許可以使用std::ios::sync_with_stdio(false); 這條語句關掉scanf和cin的同步,加快效率。但是即使這樣cin還要慢,而且一旦使用了這條語句,scanf和cin混用可能就會造成一些奇怪的錯誤。

            4、Java相關:Java整體效率大概比C/C++慢2倍以上,但是Java寫編程題也沒什么問題,主要就是處理好各種輸入輸出的情況。

            5、python等等其他語言,做編程題首先要自己在平臺上多練習不同的數據格式的讀取方法,還有就是效率可能偏低,另外有些語言封裝的功能太豐富了,以至于代碼里各種函數完成的最終代碼,筆試官或者面試官對于算法的考察并不想看到這樣的code。

            6、開辟數組空間最好根據題目的數據范圍要求來,這里可能會造成runtime error,如果代碼中遞歸的深度太深也可能爆??臻g導致runtime error。

            

    關于輸出格式

            格式問題經常令人抓狂,其實主要都有幾個常見的坑

            1、行末空格:比如我輸出需要打印多個數需要使用空格分隔的時候,我們循環使用printf("%d ",x);這種會很方便,但是這樣會導致行末多一個空格,后臺系統會嚴格比對你的輸出和.out文件,這樣也會被判錯誤。

            2、換行問題,對于每個樣例,建議輸出完全之后都換行一下。對于一些題目,可能就是不換行就導致了后面輸入數據錯位,那就肯定不可能過了。

            關于時間復雜度分析:

            通常來說一般的系統1s能跑的算法量級是不足1e8的,所以做題的時候評估算法效率很重要,直接判斷你的做法能否通過,當然這是以C/C++為標準的,其他語言自己乘個時間倍數。

            舉個例子,比如題目n = 1e5,那么我就可以很敏感的知道我的算法需要一個 O(n) 或者 O(nlogn)。平方復雜度直接超時!

            最后關于 "我本地能通過,交上去就是不對"

            這個問題很蠢!通不過就是有一些問題。一個是要累積經驗,分析到底可能出現的問題在哪里。另外不要使用一些奇怪的函數和行為。之前有見過有人使用了windows和linux平臺那個功能的函數名都不一樣的奇葩函數,所以要使用標準的跨平臺的庫函數。各個語言一般平臺都會告訴你每種語言給的編譯器版本,這個環境信息也是很重要的

    上下文導航
    相關內容
    全國熱線

    0551-69117050

    咨詢服務熱線:8:00-23:00

    合肥一元教育咨詢有限公司版權所有 如有圖片侵權請及時聯系本站,將及時刪錯或更改

    皖ICP備13012660號-1

    在線咨詢
    電話咨詢
    Tel:0551-69117050
    微信

    掃一掃
    歡迎微信咨詢

    QQ咨詢
    返回頂部