算法十五

高尔夫分数

算法描述

  • 假设,高尔夫球场包含18个洞口,选手的目标是从指定的点打球到另一终点
  • 每个洞口都是一个正数par,一个平均选手完成该任务的期望值
  • 一个选手的表现使用par的浮动值来表示
  • 例如,“bogey”,选手需要完成该洞口的任务是比par值多1;“double bogey”表示比par值多2分列举如下

    “triple bogey” par + 3
    “double bogey” par + 2
    “bogey” par + 1
    “par” par
    “birdie” par – 1
    “eagle” par – 2
    “albatross” par – 3
    “hole in one” 不增不减

  • 算法需要根据以上等级确定具体分数,18个par的值会以数组的形式给出

参数定义

  • 类名 GolfScore
  • 方法 tally
  • 输入参数 vector <int>, vector <string>
  • 输出 int
  • 方法声明 int tally(vector <int> parValues, vector <string> scoreSheet)

限制条件

  • parValuesscoreSheet都只包含18个元素
  • parValues的每个元素在[1, 5]之间

例子

  • 输入
    • parValues: {1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5}
    • scoreSheet : {“bogey”, “bogey”, “bogey”, “bogey”, “bogey”, “bogey”, “bogey”, “bogey”, “bogey”, “eagle”, “eagle”, “eagle”, “eagle”, “eagle”, “eagle”, “eagle”, “eagle”, “eagle”}
  • 输出
    • 45

前面9个分数:9*2 = 18
后面9个分数:9*3 = 27
18+27 = 45.

测试实例

  • 实例一

    • 输入

      • {3, 2, 4, 2, 2, 1, 1, 1, 3, 2, 4, 4, 4, 2, 3, 1, 3, 2}
      • {“bogey”, “double bogey”, “par”, “double bogey”, “double bogey”, “triple bogey”, “triple bogey”, “triple bogey”, “bogey”, “double bogey”, “par”, “par”, “par”, “double bogey”, “bogey”, “triple bogey”, “bogey”, “double bogey”}
    • 输出

      • 72
  • 实例二

    • 输入
      • {3, 2, 4, 2, 2, 1, 1, 1, 3, 2, 4, 4, 4, 2, 3, 1, 3, 2}
      • {“eagle”, “birdie”, “albatross”, “birdie”, “birdie”, “par”, “hole in one”, “par”, “eagle”, “birdie”, “albatross”, “albatross”, “albatross”, “birdie”, “eagle”, “hole in one”, “eagle”, “birdie”}
    • 输出
      • 18
  • 实例三

    • 输入
      • {4, 1, 3, 3, 4, 4, 1, 4, 2, 3, 3, 5, 4, 1, 4, 4, 2, 1}
      • {“triple bogey”, “triple bogey”, “bogey”, “par”, “triple bogey”, “double bogey”, “triple bogey”, “triple bogey”, “par”, “eagle”, “bogey”, “bogey”, “birdie”, “par”, “triple bogey”, “eagle”, “triple bogey”, “triple bogey”}
    • 输出
      • 77
点赞