竞争程序员的提示和技巧|集合2(用于竞争编程的语言)

这是一个经常被问到的问题,因为在竞争性编程中,哪种语言应该更有效。这是一件不应该担心的事情,因为重要的是逻辑,而不是语言。大多数语言或多或少相同,但到目前为止,最喜欢的语言是C++,这里有原因。

null

python

简单易行: Python很简单,易于编写(我们需要更少的输入),并且有大量的模块集合,几乎包含了您可以想象的所有函数。

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

执行缓慢: Python程序通常比Java慢(参见 ).Python由于执行时间很长,在启动时几乎被排除在外。

现在我们大多只剩下java、C++、C++了,现在这里变得比较难,而且主要依赖于用户,但是我们来讨论它们的优点和缺点。

JAVA

  • STL与容器: C++中的STL设计得很好,而有些人更喜欢java容器。STL没有直接解决方案的情况很少。例如,STL中的优先级_队列不支持Dijkstra最短路径算法和Prim算法实现所需的减少密钥操作

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

超过时限 :你可能会得到TLE,因为Java在时间限制方面(尤其是在SPOJ中)稍微慢一点,Codeforces。

大整数和正则表达式: Java在编程竞赛方面没有多少优势。Biginteger、正则表达式和几何体库就是其中的一些。

  • 现在让我们继续C++。

C++ 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++与java Java代码更长 程序员在用Java编程时需要编写更多的代码

  • Java是冗长的 在C++中,输入输出比较简单,只需编写Snff/PrimTf即可。在Java中,需要BufferedReader类,这也是一个乏味的过程。

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

C++更受欢迎: 无论是起源年还是使用舒适度,但是C++在使用该语言的用户数量方面胜过java。

C++节省时间: 众所周知,java比C++慢。我们通常需要多次编译和运行程序来测试它们。它在C++中花费的时间相对较少。因此,在有限的时间竞赛中,我们的时间可以节省。

把它打包起来,C++是直到编程语言竞赛时最常用的语言,其次是java,但是你应该总是选择一种你喜欢的语言。对任何语言都充满信心是最重要的。千万不要选择一种你“刚刚学过”的语言,因为用这种语言很难表达自己。

对于主题,从cakewalk问题开始,然后转移到特别问题,然后涵盖标准问题 算法 数据结构 .最后学会优化你的代码。例如,一直以来,我们都强调学习数学 数学算法 是优秀竞争性编程的重要组成部分。

编码快乐!!

参考: http://unthought.net/c++/c_vs_c++。html

这篇文章是由我们校园极客的贡献独家起草的- Rahul Agarwal、Aditya Chatterjee、Shubham Singh Rajput、Vineet Sethia、Saiteja Reddy、Shaily Seth、Mudit Maheshwari、Ajay Jain和Ruchir Garg。

如果你喜欢GeekSforgeks,并且想贡献自己的力量,你也可以写一篇文章,然后把你的文章邮寄给评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

竞争程序员的技巧和窍门|第1集(初学者)

如果你不熟悉竞争性编程, 本文 可能会帮助您编写第一个代码。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享