编程竞赛所用的语言
Posted 六一编程网
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程竞赛所用的语言相关的知识,希望对你有一定的参考价值。
在编程竞赛中应该首选哪种语言才有效?这是一个经常问到的问题。其实不必担心,因为重要的是逻辑而不是语言。大多数语言或多或少都是相同的,但是直到现在,提供最多的语言是C++。
Python
简单易用:Python非常简单,易于编写,并且拥有大量的模块,其中包含几乎所有您可以想象的功能。
数据类型:Python通常是首选,因为它对整数的存储没有任何上限。同样,不需要指定它是哪种数据类型,类似的事情使编写代码变得更容易,但同时又使其难以编译。
执行速度慢:Python程序通常比Java慢。由于Python的执行时间较长,因此从一开始就将Python排除在外。
在任何地方都不允许使用Python:在各种流行的在线竞争性编程门户网站的竞赛中都不允许使用Python。
现在我们基本上只剩下Java,C,C++,现在很难进行比较,并且主要取决于用户,但是让我们讨论它们各自的优缺点。
Java
STL与容器:C++中的STL设计得非常好,而有些人最喜欢Java容器。在极少数情况下,STL没有直接解决方案。例如,STL中的priority_queue不支持减少键操作,这是实现Dijkstra最短路径算法和Prim算法的必要条件。
Java中的异常处理是无与伦比的:与C++相比,Java代码提供了更强大的异常处理。例如,在Java中更容易跟踪ArrayIndexOutOfBound异常或分段错误。C++/C可能会给您错误的答案,但是Java在这种情况下肯定是可靠的。
超过时间限制:由于Java在时间限制方面(特别是在SPOJ中),Codeforces可能会稍慢一些,因此您可能会获得TLE。
大整数和正则表达式:就编程竞赛而言,Java具有一些优势。Biginteger,正则表达式和几何库就是其中一些。
现在让我们继续C++。
C++ and C
C++的速度可与C媲美:许多C程序也是有效的C++程序。编译时,此类C程序以相同的速度运行。
C++不会强制进行面向对象的编程:C++语言包含一些语言扩展,这些扩展方便了面向对象的编程,而C ++不会在任何地方强制进行面向对象的设计,它只是允许这样做。
参数化类型template关键字允许程序员编写算法的通用(类型不可知)实现。在C语言中,可以使用如下元素编写通用列表实现:
struct element_t
{
struct element_t *next, *prev;
void *element;
};
C ++允许编写如下内容:
template <typename T>
struct element_t
{
element_t<T> *next, *prev;
T element;
};
更大的标准库:C++可以充分利用C标准库,并且C++包括自己的库,包括标准模板库。STL包含许多有用的模板,例如上面的排序例程。它包括有用的通用数据结构,例如列表,映射,集合等。像排序例程一样,其他STL例程和数据结构也针对程序员的特定需求量身定制,程序员要做的就是填写 类型。例如,如果需要实现二进制搜索来解决问题,则必须编写自己的函数,而在C ++中,二进制STL例程定义为
binary_search(startaddress, endaddress, valuetofind)
C++ vs Java
Java代码更长:Java编程时,程序员需要编写更多代码。
Java非常冗长:在C++中,只需编写scanf/printf,输入输出就更简单了。在Java中,您需要BufferedReader类,这又很乏味。
C++ STL与Java容器:大多数程序员发现使用STL更容易。
C++更为流行:无论是起源年份还是使用舒适性,使用C++语言的用户数量方面都优于Java。
C++可以节省时间:众所周知,Java比C++慢。我们通常需要多次编译并运行程序以对其进行测试。在C++中花费的时间相对少得多。因此,在有限的时间竞赛中,可以节省我们的时间。
总结起来,在编程竞赛中,C++迄今为止是最受欢迎的语言,其次是Java,但是您应该始终选择自己喜欢的语言。掌握任何一种语言都至关重要。切勿选择一种您刚刚“学过”的语言,因为用这种语言表达自己会很困难。
对于主题,从cakewalk问题开始,然后转到特别问题,然后介绍标准算法和数据结构。最后学会优化代码。所有这些时间都将重点放在学习数学上,因为数学算法是竞争性编程的重要组成部分。
Happy Coding!!
以上是关于编程竞赛所用的语言的主要内容,如果未能解决你的问题,请参考以下文章
比较好的大学生C语言竞赛编程题 或者比较有档次的竞赛都有哪些(本科、研究生可以参加的) ?
译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务