编程…竞争性编程…
它教你如何思考? 。如果您是一名程序员,您可能已经了解了史蒂夫·乔布斯( Steve Jobs)所说的这些行的深刻含义,并且即使在关闭计算机后,您仍然会继续考虑编程在项目中编写的东西或代码。进入编程后,您只是不学习编码,而是通过将代码分解为较小的块,然后使用基于逻辑的创造力从不同角度解决问题,从而学习“思维的艺术” 。
编程很有趣,编程是大脑的一项运动,编程是一项智力运动,当这项运动在互联网上举行时,运动程序员作为参赛者,那么它被称为竞争性编程。查看Wikipedia关于竞争性编程的说法。
为什么要为这场比赛做好准备并参与其中?
编程是一个具有挑战性的角色,一旦进入这一领域,您将面临新的挑战,您可能必须解决一些以前没有人解决过的问题,或者他们的解决方案在任何地方都不存在。届时,您将可以使用问题解决和逻辑能力在最短的时间内提出解决方案。因此,这些具有竞争力的编程背后的一个明确目标是“为程序员做好准备,以使他/她的逻辑能力增强并且他/她能够为具有挑战性的情况编写代码。 ”
另一个原因是许多大公司,例如Google,Facebook。微软,亚马逊通过竞争性编程来招聘,因此,如果您想加入这些公司,那么您真的需要动手参与竞争性编程。不管您是新手程序员,还是您之前都写过一些代码,我们都将告诉您一些步骤,方法和技巧,以帮助您做好竞争性编程的准备。让我们详细讨论一下。
请记住,您需要精通以下各项:
- 任何编程语言语法(选择高度推荐的C / C++ / Java )。
- 时空复杂度算法分析。
- 能够考虑蛮力解决方案。
- 对所有数据结构(如数组,列表,堆栈,队列,树,图,特里等)的良好做法。
如何为竞争性编程做准备?
1.选择一种编程语言:首先,您需要选择最熟悉的编程语言并学习其语法。它可以是任何C,C++, Java, Python或任何编程语言。编程语言是一种工具,您可以通过该工具与计算机进行通信并指示操作方法。与任何其他语言相比,C++,C或Java是一种更快的编程语言,它也可以用于任何编码挑战或采访中。因此,如果您从这三种语言中选择一种是很好的,但如果您对另一种语言感到满意,则没有任何限制。如果您是初学者,则可以使用Python,因为它易于学习并且语法易于使用。如果您至少对任何一种编程语言都有一定的把握,那么使用它的语法编写代码就不会遇到困难。
2.了解时间和空间复杂性的概念:在大多数情况下,存在一个以上问题的解决方案,因此您需要提出最佳解决方案,即最佳解决方案,这取决于一个时间和空间的多少。算法需要解决的问题。因此,了解这两个概念以为该问题编写最佳解决方案真的很重要。
3.了解数据结构和算法的基础知识: DSA是编程的核心,在解决竞争性编程中的编码问题时,您不能忽略它。数组,链接列表,堆栈,队列,树,特里,图形,排序,递归,动态编程DSA的所有这些基本构建块都将帮助您成为一名优秀的程序员。您需要知道最重要的事情是什么,何时何地应用它们。这意味着哪种数据结构适合哪种类型的问题以获得最佳解决方案。您应该知道如何在编码问题中将两者完美地结合在一起。
4.应对挑战并解决编码问题:您已经学习了一种编程语言,已经了解了时间和空间的复杂性,并且还了解了DSA的基础知识,现在是时候动手动手并杀死狮子了。丛林。是的……您需要参与不同编码平台上的编码挑战。参加比赛之前,如果您自己练习一些挑战然后再参加比赛,那就太好了。如果您正在寻找这些编码平台的资源,那么很多站点都在其中,例如Codechef,Codeforces,Topcoder,SPOJ。这是freecodecamp上这些站点的完整列表。
从这些站点的基础级别开始,一旦建立了信心,就可以脱离舒适区,并逐步尝试解决复杂的问题。一旦开始在这些站点上解决问题,您需要牢记以下几点…
- 您需要了解这些平台上的输入,输出和测试用例。检查链接“在Codechef上解决问题”以解决这些平台上的编码问题。
- 这些平台在大量输入上运行您的代码,然后取出输出并将其存储在一个位置。他们也有作者代码,而作者代码是问题的正确代码。他们在作者代码上运行相同的输入集并创建输出,然后,它们将这两个输出匹配。如果这两个输出匹配,那么您的解决方案将被视为接受,并且您的代码应通过所有测试用例才能被接受。
- 一旦看到这些编码平台上的问题,并以为自己没有能力或解决这些问题的思维能力不高,便可能一开始就陷入僵局。原因是作为一个初学者,您只知道该语言的语法和一些基本的循环或函数,因此,当您遇到这些挑战时,您会陷入僵局并开始怀疑自己的能力,而您不应该这样做。您需要了解,有一个学习竞争性编程的过程,并且您必须逐步从0级过渡到最高级别。
5.定期练习并做:您的耐心,奉献精神和一贯性对于成为一名优秀的竞争性程序员非常重要。每天在这些平台上继续练习编码问题,或者您也可以借助白板来解决编码问题,但重要的是要定期进行。开始后,请不要犯任何错误,请稍事休息。无论问题有多困难或解决单个编码问题需要花费多少时间,都请坚持下去。参加不同的编码竞赛,并向其他程序员学习。您的日常实践将使您成为完美的编码人员,良好的问题解决者,并且您将能够找到针对特定问题的合适数据结构,这在软件开发中非常重要。
尖端:
- 作为竞争性编程的初学者,就像给IIT第五或第六名学生提供论文,然后要求他解决问题。一旦知道了语法,循环,函数和所有内容,您将感觉一样,但是您无法解决这些编码问题,那是完全可以的。了解每个初学者都要经历此阶段。
- 提交越高,这些编码平台上的问题越容易,因此您可以按照解决问题的人员的数量对这些问题进行排序。
- 创建社区并尝试找到志趣相投的人,这些人具有不同的技能,以便您可以互相学习,即使您在大学时,也可以组成一个团队并加入ACM ICPC。
- 您可以下载应用程序Code Buff之一,该应用程序将帮助您获得在许多不同平台上发生的竞争性编程竞赛的通知。它还允许用户设置提醒。
- 为了参与竞争性编程,您可以采用基于项目的学习方法,在这种方法中,一旦您了解语言的语法和基本原理,就可以创建多个具有挑战性的项目,并且在完成许多项目之后,您将意识到逻辑的工作原理。开发,这将帮助您提高编程能力。之后,您可以转向竞争性编程,并且您会发现现在解决竞争性编程的问题变得更加容易,并且现在您可以做得很好。
编程确实需要很大的耐心,所以不要气or或如果遇到错误的答案就不要放弃。这是大多数人对编程失去兴趣的地方。如果脑海中有声音说出您的方法正确,请继续尝试一天,一周,几个月。如果找不到解决方案,请寻求帮助,如果您没有找到相关主题,请阅读编码人员用来解决问题的各种方法,但是请不要退出。另外,只有在完全确定已经付出了很多努力并且现在什么也不做的情况下,您才可以阅读解决方案。但是请确保再次编码相同的问题。仅在保持一致性且不停止的情况下,您才将开始每天改善。
The biggest mistake programmers make is probably getting discouraged and not practicing enough. Or practicing only on problems they feel they’re good at.
– Derek Kisman, aka SnapDragon
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。