大家好,我刚开始参加在线编码比赛,我想知道哪种语言在效率和调试方便方面会更好。我倾向于避免使用c++,并且通常使用java。1.其他一些语言是否合适?C夏普或python或其他(学习一个新的没有问题。) 2。熟练的C++进行有效的编程是必要的吗? 3。在java & c#之外,哪个更适合于算法竞赛?
发布于 2011-07-24 03:04:45
我认为这个应该贴在程序员SE上,但这是我的两分钱:
发布于 2011-07-24 10:12:48
使用python
首先,python更短,这在竞争场景中是一个显著的优势。
考虑:
std::map<string, int> foo;
std::stringstream str(input);
while(!str.eof())
{
std::string x;
str >> x;
foo[x] += 1
}与:
foo = Counter( text.split() )python不仅消除了无用的输入,而且提供了更强大的构造,使您能够更快地创建代码。
第二,调试工作良好。
对象以一种有用的方式打印出来。你可以“打印”任何物体。容器会显示它们的内容。在进行打印样式调试时,这可能会有所帮助。如果使用图形调试器(我使用winpdb),python的内省和动态功能使它能够轻松地查看和操作对象的所有方面。
然而:
最大的问题是竞赛必须支持python。像ACM这样的东西通常需要C、C++、Java或类似的。然而,许多在线竞赛确实支持python。
第二个问题是速度。然而,这通常并不是什么大问题,因为您的算法不应该基于执行的速度而被认为是成功的,而是基于算法的聪明。也就是说,C++可以让您更好地执行O(n^5)算法,但真正的目的是找到O(n)算法。如果你找到了正确的算法,语言就无关紧要了。
发布于 2011-07-24 03:03:11
我参加了美国的ACM竞赛,也参加了一些在线比赛。为了便于调试和编码,我选择了Java。对于在线法官而言,我倾向于使用c++/C,因为判断计算机速度慢,我宁愿编写算法代码,也不愿花时间使用Java中的不同输入/输出方法来运行它(因为某些时间限制是荒谬的,Java在处理I/O方面有时要慢一点)。这只是我的意见,但你可以随意使用。最流行的语言是用于比赛的C++和Java,如果您查看最终结果语言类别,那么您可能不会出错(很明显,其他许多语言都支持,只是不经常使用)。
https://softwareengineering.stackexchange.com/questions/95465
复制相似问题