深圳精美网站设计,云南有哪些城市,秦皇岛市 网站建设,互联网营销师挣的是谁的钱个人简介#xff1a;云计算网络运维专业人员#xff0c;了解运维知识#xff0c;掌握TCP/IP协议#xff0c;每天分享网络运维知识与技能。个人爱好: 编程#xff0c;打篮球#xff0c;计算机知识个人名言#xff1a;海不辞水#xff0c;故能成其大#xff1b;山不辞石… 个人简介云计算网络运维专业人员了解运维知识掌握TCP/IP协议每天分享网络运维知识与技能。个人爱好: 编程打篮球计算机知识个人名言海不辞水故能成其大山不辞石故能成其高。个人主页小李会科技的主页 前言 算法学习有些时候是枯燥的这一次让我们先人一步趣学算法 一.算法要素
1.数据对象的运算和操作
计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类 1.算术运算加减乘除等运算 2.逻辑运算或、且、非等运算 3.关系运算大于、小于、等于、不等于等运算 4.数据传输输入、输出、赋值等运算 2.算法的控制结构
一个算法的功能结构不仅取决于所选用的操作而且还与各操作之间的执行顺序有关。 二.爆炸函数 国王赏不起的小麦 在古代印度有一个国王,他拥有至高无上的权力和难以计数的财富。但是权力和财富最终使他对生活感到厌倦渴望着有新鲜的刺激。 某天一位老人带着自己发明的国际象棋来朝见。国王对这新奇的玩意非常喜欢非常迷恋并感到非常满足。 对老人说:你给了我无穷的乐趣。为了奖赏你你可以从我这儿得到你所要的任何东西。 老人的要求是:请您在棋盘上的第一个格子上放1粒麦子第二个格子上放2粒第三个格子上放4粒第四个格子上放8粒…… 即每一个次序在后的格子中放的麦粒都必须是前一个格子麦粒数目的倍数直到最后一个格子放满为止。 国王哈哈大笑慷慨地答应了老人这个卑微的请求。然而国王最终发现按照与老人的约定全印度的麦子竟然连棋盘一小半格子数目都不够。 老人索要的麦粒数目实际上是天文数字总数将是一个20位数折算重量约为2000多亿吨即使现代全球小麦的年产量也不够。 简单算一下假设把第一个格子的一粒米写成2的0次方第二个格子写成2的1次方第三个格子写成2的2次方那么第N个格子就可以写成2的N-1次方。国际象棋一共64个格子到了第64个格子的时候需要放的米粒数就是2的63次方即9223372036854780000粒这还只是这一个格子的容量如果全部累计则为18446744073709600000粒。如果1000粒米有一克重那么折算一下第64格就需要放9223372036吨米。 由指数函数图象来看简直可以说是直线增长的(实际上远比直线增长快)比爆炸的威力还要大所以指数函数也称为爆炸函数。 1.什么是爆炸函数 三.方法介绍
1.递推法 递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项通常是通过计算机前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复该算法利用了计算机速度快和不知疲倦的机器特点。 2.递归法 程序调用自身的编程技巧称为递归recursion。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时递归前进当边界条件满足时递归返回。 3.穷举法 穷举法或称为暴力破解法其基本思路是对于要解决的问题列举出它的所有可能的情况逐个判断有哪些是符合问题所要求的条件从而得到问题的解。它也常用于对于密码的破译即将密码进行逐个推算直到找出真正的密码为止。例如一个已知是四位并且全部由数字组成的密码其可能共有10000种组合因此最多尝试10000次就能找到正确的密码。理论上利用这种方法可以破解任何一种密码问题只在于如何缩短试误时间。因此有些人运用计算机来增加效率有些人辅以字典来缩小密码组合的范围。 4.贪心算法 贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。 5.分治法 分治法是把一个复杂的问题分成两个或更多的相同或相似的子问题再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解原问题的解即子问题的解的合并。 6.动态规划法 动态规划是一种在数学和计算机科学中使用的用于求解包含重叠子问题的最优化问题的方法。其基本思想是将原问题分解为相似的子问题在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础被广泛应用于计算机科学和工程领域。 7.迭代法 迭代法也称辗转法是一种不断用变量的旧值递推新值的过程跟迭代法相对应的是直接法或者称为一次解法即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点让计算机对一组指令或一定步骤进行重复执行在每次执行这组指令或这些步骤时都从变量的原值推出它的一个新值。 8.分支界限法 分枝界限法是一个用途十分广泛的算法运用这种算法的技巧性很强不同类型的问题解法也各不相同。 9.回溯法 回溯法探索与回溯法是一种选优搜索法按选优条件向前搜索以达到目标。但当探索到某一步时发现原先选择并不优或达不到目标就退回一步重新选择这种走不通就退回再走的技术为回溯法而满足回溯条件的某个状态的点称为“回溯点”。 四.兔子数列
1.兔子算法 题目古典问题3个月起每个月都生一对兔子小兔子长到第三个月后每个月又生一对兔子假如兔子都不死问每个月的兔子总数为多少 分析首先我们要明白题目的意思指的是每个月的兔子总对数假设将兔子分为小中大三种兔子从出生后三个月后每个月就会生出一对兔子 那么我们假定第一个月的兔子为小兔子第二个月为中兔子第三个月之后就为大兔子那么第一个月分别有1、0、0第二个月分别为0、1、0 第三个月分别为1、0、1第四个月分别为,1、1、1第五个月分别为2、1、2第六个月分别为3、2、3第七个月分别为5、3、5…… 兔子总数分别为1、1、2、3、5、8、13…… 于是得出了一个规律从第三个月起后面的兔子总数都等于前面两个月的兔子总数之和即为斐波那契数列。 2.什么是兔子数列 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233377610987159725844181676510946177112865746368[1]
正在上传…重新上传取消斐波那契数列特别指出第0项是0第1项是第一个1。
这个数列从第3项开始每一项都等于前两项之和。
斐波那契数列的提出者是意大利数学家列昂纳多·斐波那契Leonardo Fibonacci生于公元1170年卒于1250年籍贯是比萨。他被人称作“比萨的列昂纳多”。1202年他撰写了《算盘全书》Liber Abacci一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事派驻地点相当于今日的阿尔及利亚地区列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯等地研究数学。 感谢支持关注~~