保龄球计分算法
保龄球计分算法
题目描述:
保龄球前面个会摆放10个球瓶,计分规则如下:
如果第一球就把全部的球瓶击倒,所得的分数是10分再加下两球的倒瓶数;如果第一球没有全部击倒,就要再打一次,如果两次能把全部球瓶击倒,则分数是10分再加下一球的倒瓶数;如果两次加一块没有击倒全部球数,则分值为两次的倒瓶数和。
请你写一个记分牌程序,统计每次的得分。
可以参考下保龄球-百度百科介绍的计分规则部分,题目和真实场景下是相同的。
保龄球项目是根据运动员投球所击倒的球瓶数量来计算得分,按运动员在规定局数中所得分数的多少决定胜负。记分规则如下:每局比赛由10格组成,前9格中运动员每格有两次投球机会:(1)如该格第一次投球击倒全部10个球瓶,则不需第二次投球,该格计为全中,该格全中所击倒的瓶数(10分)加随后两次投球所击倒的瓶数为该格所得的分数;(2)若该格第一次投球未能击倒全部10个球瓶,则可投第二次,若第二次投球将剩余的球瓶全部击倒,则该格计为补中,该格两次投球所击到的瓶数(10分)加下一次投球所击倒的瓶数为该格所得的分数;(3)若该格两次投球未能将10个球瓶全部击倒,则称为失误,该格得分为两次投球所击倒的全部瓶数。在第10格中,如果在第一或第二次投球中出现了全中或补中,则运动员可进行第三次投球,该格所得分数为该格实际击倒的球瓶数量。按上述规定将运动员10格所得分数进行累计,即为该局得分
分析:
分析此问题,首先一次击球后是无法判断出成绩的,因为一次击球如果全部击倒,则会奖励下两球的倒瓶数,如果两次能全部击倒,则会奖励下一次的倒瓶数,如果两次加一起都没有全部击倒,则直接计算分值。
所以有如下规则:
如果第一球 = 10,则分数等于 第一球 + 第二球 + 第三球
如果第一球 + 第二球 = 10,则分数等于 第一球 + 第二球 + 第三球
如果第一球 + 第二球 < 10,则分数等于 第一球 + 第二球
所以将每次的分值记录下来,等数据满足条件能够计算时再开始计算,并移除已经计算的部分。
代码:
1 |
|