内容正文:
算法及其表示
游戏中的策略
问题思考:农夫过河
游戏规则:
一个农夫带着一条狼、一头山羊和一篮蔬菜要过河,但只有一条小船。乘船时,农夫只能带一样东西。当农夫在场的时候,这三样东西相安无事。一旦农夫不再,狼会吃羊,羊会吃菜。
要求:农夫安全地将这三样东西带过河。
解决步骤:
1.农夫带羊过河
2.农夫回来
3.农夫带狼(菜)过河
4.农夫带羊回来
5.农夫带菜(狼)过河
6.农夫回来
7.农夫带羊过河
一个问题得到解决就可以说解决该问题的算法已经找到,否则这个问题的算法还没有找到和设计出来,或问题本身不存在可行的算法。
算法
对于同一个问题,
是不是只有一种解决的算法呢?
比较“泡茶”的多个算法,哪个个(些)是正确的算法,最优的算法是哪一种?为什么?
“泡茶”算法
为了有效地解决问题,不仅需要保证算法 ,还要考虑算法的 。
正确
质量(效率)
猜价格游戏策略
描述“猜价格”的算法
要求写出具体步骤
1. 输入猜测的价格G,范围为[L,H]
2. 比较G与真实价格V的大小关系
如果G=V,则输出“恭喜你,答对了”,算法结束
如果G<V,则输出“低了”,调整G的范围为[G+1,H],跳转到步骤1
如果G>V,则输出“高了”,调整G的范围为[L,G-1],跳转到步骤1
流程图的图标
开始、结束
判断框
处理框
输入、输出框
连接框
用流程图表示“猜价格”算法
开始
输入价格G
G=V?
结束
输出“恭喜你,答对了”
G>V?
输出“高了”
输出“低了”
Y
N
Y
N
V←商品真实价格
算法的表示
自然语言
流程图
伪代码
计算机语言
……
算法表示方法之一:自然语言
日常生活中使用的语言 + 一些必要的数学符号
例如:输出X,Y两个数中较大者:
1.算法开始
2.输入两个数X,Y
3.如果X≥Y,则较大数max=X
4.如果X<Y,则较大数max=Y
5.输出最大数max
6.算法结束
以下自然语言的真实意思是什么
三个学校的老师
①从三个不同学校来的老师
②从学校来的老师,一共三个人
自然语言的缺陷:二义性
算法表示方法之一:伪代码
使用某种程序设计语言的控制结构,再加上一定的自然语言描述
例如:输出X,Y两个数中较大者:
输入两个数X,Y
if X≥Y th