2016-01-06 105 views
-1

https://www.codechef.com/problems/TSORT/不同的結果 - 這是要解決的問題同樣的解決方案,在Codechef(JAVA)

https://www.codechef.com/viewsolution/9110492 - 我的Java解決方案(實施比較排序)

https://www.codechef.com/viewsolution/8599514 - 一些Java中的其他人的解決方案(他也執行比較排序)

當我提交我的解決方案時,我得到TLE(超時超時),但另一個解決方案獲得AC。

這種差異的可能原因是什麼?

注意:如果解決方案不同,請告訴我代碼改進的區別和區域。

回答

1

有一點需要注意的是在其他解決方案中使用(自己實現)FastScanner類。只需從System.in中讀取數據,而不是等待(就像您的代碼那樣!),以獲取System.in中給出的完整行。

我想你的解決方案正在等待行結束你的BufferedReader繼續 - 但考慮到測試輸入它永遠不會。

通過調用BufferedReader.readLine(),您阻止,直到

一)EOF被讀取(不會STDIN發生,除非故意)或

B)線(包括有效的行分隔符字符(S)對於該平臺)已被閱讀。

您的競爭對手剛剛從System.in讀入大byte[] - 儘可能多的信息。因此,假設只有System.in中沒有換行符,所以可能會保存,因此您的代碼被卡住了。

賦值中的輸入特別顯示最後一個int後沒有換行符。所以這可能是您在等待更多輸入的地方。

+0

感謝您的回覆。您能否詳細解釋一下使用BufferedReader接受給定輸入格式的輸入時出現的問題。您的反饋可能會幫助我更好地理解這些概念!謝謝 –

+0

編輯我的問題來解釋更多。 – Jan