都市摩天楼java(分享我在编程比赛中获得金牌的经验和经历)
下面这张图是我在美国计算机奥林匹克竞赛中获得的3枚金牌
我在中学的第一年开始从零开始学习C 。我对编程、算法或数据结构一无所知。在我写完第一行代码七个月后,计算机奥林匹克竞赛开始了。这是检验我的学习成绩的一个最佳时机。
经过2天的比赛,结果证明了一切:我赢得了金牌。
我其实还是有点震惊的,因为我已经超过了5年经验的竞争对手。我很清楚我的努力程度,但这个成就确实超出了我的预期。
因此,在这篇文章中我想分享一些成功经验给到大家。
你应该选择什么语言?
强烈推荐C !它非常快。由于STL,因此实现不同的算法花费的时间会很少。所有比赛都接受C 。自从我写第一行代码以来,就一直在使用它。
C?还是去学习C 吧,因为STL。如果您了解C,那么您也可以使用C 编写代码。
Java?有点慢。如果比赛时间紧迫的话,您可能会超出时间限制。而且很多比赛都不接受Java。
你在哪里练习?
我推荐Sphere Online Judge(SPOJ)。它在质量和数量方面都很有效。如果您在解决问题时遇到困难,可以在线获取社论和解决方案。为SPOJ.pl支持网站SPOJ Toolkit和Problem分类器。
首先,你必须掌握基础知识
在习惯了语言的语法后,是时候解决一些问题了。从需要实施技能的简单任务开始。在此阶段,您的目标是定义您的编码风格。也许你喜欢写很多空格,也许不是,也许你习惯把括号放在与'if'语句相同的行上,也许不是。
你必须找到你的编码风格,烙上属于你的印记。
在开发编码风格时,请牢记这两个原则。
易于实施。您应该能够放心地实施您提出的解决方案。为什么?因为在竞争中,你最不希望发生的事情就是在代码中迷失。最好再多花5分钟考虑,而不是在执行时多花费10分钟来实现它。
易于阅读。这意味着“易于调试”。让我们面对现实,我们都知道bug会一直出现。可能当你还有十分钟的时候,你还是找不到所谓的bug,要解决这个问题,你必须编写清晰的代码。这样,当您开始调试时,代码会感觉自然而且易于理解。
这是我的编码风格。Just-to-share-code/Biconnected components at master · margiki/Just-to-share-code · GitHub
如何提高您的执行能力?
实践、实践和更多实践。我建议你在SPOJ上处理前250个最容易解决的问题。按照确切的顺序解决它们,并花至少一个小时来思考这个问题。
不要说'这个问题对我来说太难了'。这是失败者的心态。
拿一张纸和一支铅笔试着思考。通过这种方式,您可能会找到解决方案,说不定会开发算法思维。如果您在一小时内未找到解决方案,那么您可以查看论坛或社论来看看别人的解决方案作为参考。
这种方法的结果是什么?快速实施并学习到经典问题和算法。
其次,您必须掌握算法和数据结构
遵循分层方法。你不会在不知道如何走路的时候就开始跑步,也不会在没有坚实基础的情况下就建造摩天大楼。
这意味着您无法在学习路径中刻录步骤。或者说,如果你这样做了,那么你将继续增大随着时间的推移而加深的知识差距。从基本算法和数据结构开始
其实这很难开始的,可能是因为你不知道该先学什么。这就是我创建算法和数据结构迭代器的值是多少?'。
通过这种方式,你就可以自己思考了。随着时间的推移,您将在编写代码时实时开始调试。
编译出品