算法
算法基本概念
1. 定义
- 一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,明确的,此顺序将在有限的次数下终止。
- 算法是解决某个特定问题的一种方法或一个过程。
- 算法是任何定义好了的计算程式,它取某些值或值的集合作为输入,并产生某些值或值的集合作为输出。
2. 特性
- 可行性
① 算法中每一个步骤都是可以实现的;
② 算法执行的结果能达到预期的目的。 - 确定性
算法的每一步骤必须有清楚的语义,即无二义性。 - 有穷性
算法必须在执行有限个步骤之后终止。 - 输入
一个算法有零个或多个数据输入。 - 输出
一个算法产生一个或多个输出。
基本要素
- 算法控制结构
顺序结构
选择结构
循环结构 - 数据的运算与操作
算术运算(+,-,*,/)
逻辑运算(&&,||, !)
关系运算(<,>,<=,>=,==,!=)
数据传输(赋值,输入,输出)
设计过程
- 通过对问题进行详细地分析,抽象出相应的数学模型;
- 确定使用的数据结构,并在此基础上设计对此数据实施各种操作的算法;
- 选用某种语言将算法换算成程序;
- 调试并运行这些程序。
算法描述语言
算法描述语言是一种面向人而非机器的算法描述工具。
- 算法流程图
- 结构化流程图
- 伪代码
算法描述语言要求
- 具有良好的可读性
- 无歧义性
- 容易转换为程序设计语言
算法设计基本方法
列举法
基本概念
- 基本思想
根据提出来的问题,列举出所有可能的解,并根据问题中所给定的约束,检验哪些解是需要的,哪些是需要排除的,输出符合要求的解。 - 特点
比较简单
适合解空间小的问题
常用于解决是否存在或有多少种可能等类型的问题 - 难点
优化列举方案
百鸡问题
- 问题描述
设每只母鸡值3元,每只公鸡值2元,两只小鸡值0.5元。现用100元买100只鸡,一共有多少方案。 - 基本思路
列举出所有符合约束条件的方案,设母鸡i只,公鸡j只,小鸡k只,则有3i+2j+0.50.5k=100。 - 算法1