首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算法竞赛的语言选择

算法竞赛的语言选择
EN

Software Engineering用户
提问于 2011-07-24 02:59:56
回答 11查看 3.3K关注 0票数 5

大家好,我刚开始参加在线编码比赛,我想知道哪种语言在效率和调试方便方面会更好。我倾向于避免使用c++,并且通常使用java。1.其他一些语言是否合适?C夏普或python或其他(学习一个新的没有问题。) 2。熟练的C++进行有效的编程是必要的吗? 3。在java & c#之外,哪个更适合于算法竞赛?

EN

回答 11

Software Engineering用户

发布于 2011-07-24 03:04:45

我认为这个应该贴在程序员SE上,但这是我的两分钱:

  1. 我建议您精通C.简单性、示例和作为Java和C#基础的东西,这将有助于您为未来做好准备。另外,很多示例和演示都是基于C的。参见本站的统计数据作为示例。
  2. 我不认为c++知识是必要的。但相信C1是。
  3. 在Java和C#之间,为了灵活起见,我将使用C#。
票数 10
EN

Software Engineering用户

发布于 2011-07-24 10:12:48

使用python

首先,python更短,这在竞争场景中是一个显著的优势。

考虑:

代码语言:javascript
复制
std::map<string, int> foo;
std::stringstream str(input);
while(!str.eof())
{
      std::string x;
      str >> x;
      foo[x] += 1
}

与:

代码语言:javascript
复制
foo = Counter( text.split() )

python不仅消除了无用的输入,而且提供了更强大的构造,使您能够更快地创建代码。

第二,调试工作良好。

对象以一种有用的方式打印出来。你可以“打印”任何物体。容器会显示它们的内容。在进行打印样式调试时,这可能会有所帮助。如果使用图形调试器(我使用winpdb),python的内省和动态功能使它能够轻松地查看和操作对象的所有方面。

然而:

最大的问题是竞赛必须支持python。像ACM这样的东西通常需要C、C++、Java或类似的。然而,许多在线竞赛确实支持python。

第二个问题是速度。然而,这通常并不是什么大问题,因为您的算法不应该基于执行的速度而被认为是成功的,而是基于算法的聪明。也就是说,C++可以让您更好地执行O(n^5)算法,但真正的目的是找到O(n)算法。如果你找到了正确的算法,语言就无关紧要了。

票数 10
EN

Software Engineering用户

发布于 2011-07-24 03:03:11

我参加了美国的ACM竞赛,也参加了一些在线比赛。为了便于调试和编码,我选择了Java。对于在线法官而言,我倾向于使用c++/C,因为判断计算机速度慢,我宁愿编写算法代码,也不愿花时间使用Java中的不同输入/输出方法来运行它(因为某些时间限制是荒谬的,Java在处理I/O方面有时要慢一点)。这只是我的意见,但你可以随意使用。最流行的语言是用于比赛的C++和Java,如果您查看最终结果语言类别,那么您可能不会出错(很明显,其他许多语言都支持,只是不经常使用)。

票数 5
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/95465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档