2016-01-06 115 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