单元六

第28课 枚举最大胜率

最大胜率
任务场景:最大胜率
遍历→统计→取最大
原理图:遍历→统计→取最大

一、任务目标

遍历方案找胜率最高的出场。

二、核心概念讲清楚

记录 best_plan 与 best_score。

三、跟着想一遍(小例子)

枚举时每试一种方案就打印胜场,看到「目前最优」如何被更新。

易错:只看第一种方案

正确:完整遍历更新最优

想一想:枚举算法思想是什么?

四、解题思路

任务:遍历方案找胜率最高的出场。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「遍历方案找胜率最高的出场。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用 print 把结果说出来,确认屏幕上出现预期内容。
  3. 3找出重复动作,用 for / range 写成循环,少抄几遍。
  4. 4写出判断条件:什么情况下走 A,什么情况下走 B。
  5. 5对照参考代码跑通后,只改一个参数,观察结果如何变化。

流程示意(可对照左侧文字)

任务:枚举最大胜率用 print 把结果说出来用 for 循环逐个处理用条件判断决定走哪条路跑通后只改一个参数看变化

五、语句功能讲解

本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。

六、知识点讲解

枚举把可能情况逐个试一遍再选最优。穷举前先缩小候选,避免算不完。

先弄清本课输入与输出,再进编程练习对照现象。

七、编程练习

在下方 Mixly 文本编程中载入、运行与检查(浏览器即可,不必本机安装 Python)。

找最优

参考代码(对照抄写到下方 Mixly)
plans=[(3,2,1),(1,3,2),(2,1,3)]
qi=(2,1,3)
print("齐威王出场", qi)
print("--- 开始枚举 ---")
best=None
best_win=-1
for p in plans:
    w=sum(1 for a,b in zip(p,qi) if a>b)
    print("试方案", p, "→ 胜场", w)
    if w>best_win:
        best_win=w
        best=p
        print("  目前最优换成", best, "胜场", best_win)
print("--- 枚举结束 ---")
print("最终最优", best, "胜场", best_win)

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:只抄参考代码,不看运行输出,也不改参数验证。

  2. 判断:先跑通,再对照「枚举」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。

  3. 找最大胜率需?

  4. 枚举本质?

九、本节小结

三马排阵单元完成。