北京市编程比赛

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:58:04
您好,我是北京市一名高中生,我要参加一个编程比赛,着重算法实现,现在有c,vb,pascal可以选,我学了1年vb6,比较熟悉,c和pascal没学过,而且也没系统的接触过算法,但离比赛还有1个月,我想突击,我很有兴趣,每天都能拿出大量的时间,只是不知道如何选择
听说很多算法需要指针,而vb没有指针实现起来很复杂,很麻烦(而且市场上几乎没有算法讲解的书是vb描述的),所以我想问问大家选什么语言好?应该如何去努力才更有效?谢谢
算法考察范围大概是:
string manipulation
recursion
optimization
simulation
geometry
enumeration (i.e., counting)
sorting
searching
graph search
dynamic programming

你好,我也是一名中学生.
而且很巧的参加过类似的程序设计竞赛.
名字叫做Olympiad In Informatics 信息学奥林匹克竞赛.
全国最大规模的计算机编程比赛.

我把你给的算法分一下类大概是
基础:
recursion (循环)
simulation (模拟)
enumeration (统计)
sorting (排序)

这些应该不算算法吧.只能说是初学计算机或者初学程序设计的人所必需了解的东西.如果你学过一年VB,这些应该听过名字,而且能够运用其中的至少2-3个.

初等:
string manipulation (字符串处理)
optimization (最优化问题)
dynamic programming (动态规划)
进入到这里应该就算进入算法的殿堂了.动态规划是需要深刻理解的东西.基本上任何考试都会考到.这些东西我没什么好说的具体靠自己去学.

对初学有一定难度:
searching (搜索)
graph search (图论)
geometry (计算几何)
这些东西使用起来看重的应该是理解能力>>>语言所带来的影响.
特别是计算几何.很bt的东西.如果没有扎实的数学功底最好不要去碰.
如果你有时间,有精力,有能力,一个月之内应该可以把图论中的最短路和最小生成树弄懂.也只要把这两个弄懂就可以了其他的图论太难太深.
搜索的话.基础的把.乱七八糟的什么A*叠代之类的就不要去弄了.

对于语言的话我还是算比较有发言权的.
小学用过QuickBasic.中学用过的Pascal和Delphi(本质基本是相同的).现在在自学C++.但是C的情况我不是很清楚.
Basic的好处在于它的简单易用,不需要定义变量,从头到尾写起来行云流水.但是这恰恰是它最大的缺点.还有你也提到了,就是基于Basic的算法和相关资料太少.(针对QuickBasic来说,我没用过VB不清楚具体情况)
Pascal结构化的程序设计和严谨的语法让