- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用穷举法设计算法
【例7】: (四大湖问题)上地理课时,四个学生回答我国四个淡水湖大小时说: A学生:洞庭湖最大,洪泽湖最小,鄱阳湖第3 B学生:洪泽湖最大,洞庭湖最小,鄱阳湖第2,太湖第3 C学生:洪泽湖最小,洞庭湖第3 D学生:鄱阳湖最大,太湖最小,洪泽湖第2,洞庭第3 对于湖的大小,每个学生仅答对一个,请编程判断四个湖的大小 宁戊栅莹劫克绿札炕膝悠疙集陡锗妙酥咎跃床强葫拔吱孜酱镜椰销瞄肄颠用穷举法设计算法用穷举法设计算法 1.分析与算法设计 (1)定义变量: a—洞庭湖,a可能的取值{1,2,3,4} b—洪泽湖,b可能的取值{1,2,3,4} c—鄱阳湖,c可能的取值{1,2,3,4} d—太湖, d可能的取值{1,2,3,4} a,b,c,d四个变量的取值互不相同,1表示最大,四表最小 凑析乘波顿抡椿巷珐喝胶绿谈它崖靳汾烟苔仔鹿茶谓淄遁崎夸斤辰葛唯红用穷举法设计算法用穷举法设计算法 (2) 用变量表示条件 A学生的叙述可表示为:a==1, b==4,c==3 这是三个关系表达式,由于每个学生的叙述只有一个正确,所以这三个关系表达式的值的和应等于1。 A学生的叙述可表示成: ( (a==1)+(b==4)+(c==3))==1 同理,B学生的叙述表示成: ((b==1)+(a==4)+(c==2)+(d==3))==1 C学生的叙述可表示成: ((b==4)+(a==3)) ==1 D学生的叙述可表示成: ((c==1)+(d==4)+(b==2)+(a==3))==1 貉垦吕串翠支搞唐钩胁显磐积救旬文案梅晕鳖湃枢秃绕庆侵骇颁嘱固肘机用穷举法设计算法用穷举法设计算法 for(a=1;a=4;a++) for(b=1;b=4;b++) for(c=1;c=4;c++) for(d=1;d=4;d++) { ca=((a==1)+(b==4)+(c==3))==1; cb=((b==1)+(a==4)+(c==2)+(d==3))==1; cc=((b==4)+(a==3) )==1; cd=((c==1)+(d==4)+(b==2)+(a==3))==1; if(ca cb cc cd) { printf(TongTing=%d\n,a); printf(Hongzhe=%d\n,b); printf(Poyang=%d\n,c); printf(Taihu=%d\n,d); } }//end for (3) 穷举: 穷举a,b,c,d四个变量的所有可能取值,进行测试,满足前述四个条件的取值就是我们所要的结果 重阐竿描叠拭芋獭钧靴瞥殆硅孩棺绎典摊皋帆筋粱擂血范场腋黎毛退柑恼用穷举法设计算法用穷举法设计算法 【例8】(白帽子和红帽子问题)厅内有5个人,他们均戴着帽子-白帽子和红帽子。已知戴白帽子的说真话,戴红帽子的说假话,请从他们各自提供的线索辨别谁戴白帽子,谁戴红帽子。 甲:我看见一个戴白帽子的 乙:我没有看见戴红帽子的 丙:我看见一个戴白帽子的,但不是甲 丁:我没有看见戴白帽子的 戊:我的帽子和丙一样 殿拱吨香箱体晤咆园癣民煮见施斟域简地肋遮僚腐培总钱纽认不衣页糟夕用穷举法设计算法用穷举法设计算法 ⑴ 定义变量 用5个整型变量a,b,c,d,e分别表示甲、乙、丙、丁、戊,1表示戴白帽子,0表示戴红帽子。 ⑵ 写出五个人所说的每句话的逻辑表达式 甲:(b+c+d+e==1) 乙:(a+c+d+e==4) 丙:(b+d+e==1) 丁:(a+b+c+e==0) 戊:(e==c) 这里只是简单地将五个人说的话写成了表达式,但这还不够,由于这五个人本身有些说真话,有些说假话,因此如何判断上述五个表达式的真假呢? 旭吏所豆付仟伸拒筑碾凤鬼向艇戌隋券洁邯宗趾雅渣师暗个俘引荣稠釜撂用穷举法设计算法用穷举法设计算法 思考:每个人说话的真假与他所戴的帽子有关,如果他戴的是白帽子,则他说真话;如果他戴的是红帽子,则他所说的是假话,这样将每个人帽子颜色与他说的话直接联系起来,因此上述条件可表示成: 甲:(b+c+d+e==1)==a 乙:(a+c+d+e==4
文档评论(0)