Hi!请登陆

编程技巧和窍门|集合(用于竞争性编程的语言)

2020-11-11 43 11/11

这是一个经常被问到的问题,因为在竞争性编程中应该首选哪种语言来提高效率。人们不必担心,因为重要的是逻辑而不是语言。大多数语言或多或少都是相同的,但是到目前为止,最常用的语言是C ++,这就是原因。

Python:

简单易用: Python非常简单,易于编写(我们需要减少键入),并且具有大量的模块集合,其中包含几乎所有您可以想象的功能。

数据类型:Python通常是首选,因为它对整数的存储没有任何上限。同样,不需要指定它是哪种数据类型,类似的事情使编写代码更容易,但同时又使编译变得困难(参考编译时间)。

延缓执行: Python程序一般比较慢。由于执行时间长,Python在开始时就被排除在外。

许多地方不允许使用Python:在各种流行的在线竞争性编程门户网站的竞赛中都不允许使用Python。

Java:

STL与容器: C ++中的STL设计得非常好,而有些人最喜欢Java容器。在少数情况下,STL没有直接解决方案。例如,STL中的priority_queue不支持减少键操作,这是Dijkstra最短路径算法和Prim算法的实现所必需的

Java中的异常处理是比较好的:与C ++相比,Java代码提供了更强大的异常处理。例如,在Java中更容易跟踪ArrayIndexOutOfBound异常或分段错误。C ++ / C可能会给您错误的答案,但是Java在这种情况下肯定是可靠的。

超过时间限制:由于Java在时间限制方面(特别是在SPOJ中),Codeforces可能会稍微变慢,因此您可能会获得TLE。

大整数和正则表达式: 就编程竞赛而言,Java具有一些优势。正则表达式和几何库就是其中一些。

C ++ 和 C:

C ++的速度可与C媲美: 许多C程序也都是有效的C ++程序–编译时,此类C程序以相同的速度运行

C ++不会强制进行面向对象的编程: C ++语言包含一些语言扩展,可促进面向对象的编程,而C ++不会在任何地方强制进行面向对象的设计-它仅允许这样做。

参数化的类型 :template关键字允许程序员编写算法的通用(与类型无关)的实现。在C语言中,可以用以下元素编写通用列表实现:

C ++允许编写如下内容:

更大的标准库: C ++允许完全使用C标准库,并且C ++包括自己的库,包括Standard Template Library。STL包含许多有用的模板,例如上面的排序例程。它包含有用的通用数据结构,例如列表,映射,集合等。像排序例程一样,其他STL例程和数据结构也“针对”程序员的特定需求“量身定制” –程序员要做的就是填写类型。

例如,如果需要实现二进制搜索来解决问题,则必须编写自己的函数,而在C ++中,二进制搜索STL例程定义为

binary_search(startaddress, endaddress, valuetofind)

C ++与Java

Java代码更长:程序员在用Java编程时需要编写更多代码

Java是冗长的:在C ++中,仅通过编写scanf / printf即可简化输入输出。在Java中,您需要BufferedReader类,这又很乏味。

C ++ STL与Java容器:大多数程序员发现使用STL更容易。

C ++更为流行:无论是起源年份还是使用舒适性,但就使用该语言的用户数量而言,C ++优于Java。

C ++可以节省时间: Java比C ++慢是众所周知的事实。我们通常需要多次编译并运行程序以对其进行测试。在C ++中花费的时间相对少得多。因此,在有限的时间竞赛中,可以节省我们的时间。

总结起来,在编程竞赛中,C ++迄今为止是最受欢迎的语言,其次是Java,但是您应该始终选择自己喜欢的语言。掌握任何一种语言都至关重要。

相关推荐