导读 | 作为一名资深程序员,对于实际工作来说,我认为最有价值的是对算法、时间复杂度的理解,以及对问题的分析能力、对问题解法的判断能力。今天这篇文章,让我们来锻炼一下自己的逻辑思维能力吧~希望对大家有帮助~ |
现今计算机科学已经发展到比较发达的阶段,不太可能一个个人学会所有的算法,解决具体的问题的时候,有时候还是更需要通过先分析问题,然后查阅资料、思考设计、甚至是讨论,最后再实现的方式去解决。
算法也有很多不同的分支,其面向的需求不同,适用范围不同,通常的“交流”圈子也不同,比如“图形学算法”、“人工智能算法”、“分布式算法”,不同分支下的基本概念和思考方式都不同,分析问题和理解他人方法所需要掌握的“常识”也不同。每个分支下又是每年都有大量的新论文、新方法出现,也不断伴随着新需求、新的应用场景。所以,掌握基本方法和概念,根据需求去深入学习相关的算法才是比较好的选择。
有三只蚂蚁坐在三角形的三角。所有的蚂蚁随机挑选一个方向,并开始沿着三角形的边缘移动。两只蚂蚁碰撞的概率是多少?
三角形有三个顶点,每个顶点连接两条边,每只蚂蚁有两个选项,每个选项有1/2的可能性。
有两种情况,当所有的蚂蚁都朝相同的方向移动时,蚂蚁不会碰撞
所有蚂蚁以相同顺时针方向移动的可能性为1/2 * 1/2 * 1/2 = 1/8
所有蚂蚁以相同的逆时针方向移动的可能性是1/2 * 1/2 * 1/2 = 1/8
不碰撞的总概率是1/8 + 1/8 = 1/4
所以,碰撞概率变成:1 - 1/4 = 3/4
算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实大家都被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上,有位同学生动地把这些基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。
原文来自:
本文地址://gulass.cn/ant-puzzle.html编辑:王毅,审核员:逄增宝
本文原创地址://gulass.cn/ant-puzzle.html编辑:王毅,审核员:暂无