资源简介 (共28张PPT).4.1算法及其特征2022.目标GOAL熟悉将解决问题的方法归结为一系列清晰、准确的步骤的过程了解算法的基本要素和重要特征运用适当方法描述算法运用Python语言实现简单算法,解决问题.知识回顾020301算法解决问题的方法与步骤算法的描述方法1、自然语言2、流程图3、代码生活中的算法1、食堂打饭:确定自己要吃的 排队购买 刷卡2、超市购物:确定自己要买的 挑选 刷卡/刷脸432615起止框表示一个算法的开始与结束输入/输出框表示从外部输入数据到计算机内部或者从计算机内部输出数据到计算机.处理框表示操作的内容.判断框表示判断的条件。满足条件,执行标识为是的路径,反之,执行标识为否的路径.流程线指向算法运行的方向.连接符表示流程图的接续。在相互关系的流程图内,流程线将在具有相同字数或字母的另一连接符处继续下去.流程图三种结构1234有穷性:必须能在执行有限个步骤后终止确切性:每一步运算都有明确定义输入项:一个算法可以有0个或多个输入可行性:执行的任何计算都可以在有限时间内完成算法特征.算法特征5输出项:算法必须有输出,不能“无功而返”01活动一 寻找“开关对应关系”.一个房间有3盏灯,房间外有3个开关分别控制这3盏灯。在只允许进房间一次的情况下,如何判断哪个开关控制哪盏灯?.活动一1234灯只有亮,灭两种状态,因灯的特殊性,开灯的同时会伴随发光发热。因此灯被触摸时还有冷、热两种状态,综上所述,一盏灯可能有4种不同状态.分析问题思考:怎样保证每盏灯的状态都是唯一的?提示:题目中没有限制开关按动次数,所以3个开关的闭合状态可以随意改变23541给灯和开关编号同时打开1、2号开关多分钟后关掉1号开关进入房间判断哪一盏灯发亮,亮着由2号开关控制.设计算法6判断未发光的灯是否发热,如果发热了,这灯由1号开关控制,未发热的灯由3号开关控制自然语言描述设计算法流程图描述设计算法流程图描述流程图自然语言第一步:打开1、2两个开关第二步:过2分钟关闭1号开关第三步:进房间。亮着的是2号开关控制第四步:摸一下不亮的灯发热的灯泡由1号开关控制第五步:不亮不热的是3号控制算法描述02活动二. 定量分析,寻找“被污染的药丸”有四个装了药丸的瓶子,每颗药丸质量都相同,其中有一个药瓶中所有药丸被污染了。每颗被污染的药丸比污染前增重1克。已知每颗药丸的单颗标准质量,只允许称量一次,如何判断出哪个瓶子的药被污染了?.活动二321从第1个药瓶取出1颗药丸,从第2个药瓶取出2颗药丸,从第3个药瓶取出3颗药丸,从第4个药瓶取出4颗药丸,共10颗药丸。某个药瓶取出n颗药丸,若被污染,增重 克一颗药丸被污染则增重 克分析03活动三. 巧用运算,寻找“误删的ID号”学校历届校友的海量数据存储在校网络中心服务器中(共10000条,无重复数据),某管理员因为误操作删除了一位校友的ID号(8位整数)信息,恰好在备份数据库中保存了一份所有人员ID号的文件(无重复数据,无序)。怎样快速找出被误删的ID号以便恢复数据 .活动三ID号的特征数据类型及大小范围:数据在两个文件中出现的次数:备份文件ID号总和与故障文件的ID号总和的差值为:.活动三整型int 8位数字1次被误删的ID号算法描述—代码target=0 #设置初始值f1=open("copy.txt " , "r") #打开备份文件list1=f1.readlines() #读取每行数据for line in list1:target=target+int(line) #将读取的数据做和运算f1.close() #关闭备份文件f2=open("trouble.txt " , "r") #打开故障文件list2=f2.readlines() #读取每行数据for line in list2:target=target-int(line) #将读取的数据做和运算f2.close() #关闭故障文件print("被删除的ID号是:",target) #输出被删除的ID号input("运行完毕,请按回车键退出...")代码04活动四. 求解“谁是冠军”ABCD冠军不是我是C是DC说的不对.活动四已知四人中有一人说了假话,你能判断到底谁是冠军?C假设A说假话B、C、D说的是真话,冠军是A,与B、C的话矛盾假设B说假话A、C、D说的是真话,冠军是D,与D的话矛盾假设C说假话A、B、D说的是真话,冠军是C假设D说假话A、B、C说的是真话, B 、C话矛盾结果C是冠军,C说了假话.分析算法描述—代码champion=['A','B','C','D’] #设置选手列表for i in champion: #循环读取选手编号cond=(i!='A') +(i=='C') + (i=='D')+(i!='D') #查找符合条件的选手if cond==3: #说真话是否是3人print("冠军是:",i) #输出冠军input("运行完毕,请按回车键退出...")代码通常穷举算法都是用多重循环来实现的一、确定穷举范围问题所涉及的情况有哪些,情况的种数可不可以确定。 二、确定验证条件分析出来的这些情况,需要满足什么条件,才成为问题的答案。经常使用循环+判断的格式利用计算机运算速度快、精确度高的特点,对要解决的问题的所有可能情况,一个不漏地进行检查,从中找出符合要求的答案穷举算法举例两个关键实现密码暴力破解如IBM为美军方设计的“飓风破译机查找罪犯指纹超女“海选”.枚举(穷举)1) 有A、B两个人,从20个苹果中轮流拿苹果,每次只能拿1个或者2个,如果你是A,你可选择先拿或后拿,你应该采取什么样的策略才能保证自己获胜。(腾讯面试题).拓展练习答:A要想获胜,就必须保证他在倒数第二次拿苹果之后还剩下3个,这样无论B拿1个还是2个,最后一个都是A拿到。A要保证最后剩3个,则A需要考虑自己第一次拿了苹果之后,剩下的苹果是3的倍数,这样A可以控制每次A和B拿的苹果之和为3,最后一定会剩下3个。该题中A只需刚开始拿2个,然后保证以后每次拿的个数与B拿的个数之和为3即可。.拓展练习2) A、B两个人从一堆玻璃球(共100个)中向外拿球,规则如下:① A先拿,然后一人一次交替进行;② 每次只能拿1个、2个或者4个。③ 谁拿最后一个球,谁就是最后的失败者。请问,A、B两个人谁将是失败者?(阿里巴巴面试题)答:B只要保证最后剩下的是1个或者4个,那么最后一个就一定是A拿。具体的策略是B要保证每次A和B拿玻璃球的个数之和为3个或者6个,这样B拿玻璃球之后剩下的玻璃球就是1个或者4个。.感谢观看 展开更多...... 收起↑ 资源预览