P1166 打保龄球

题目描述

打保龄球是用一个滚球去打击十个站立的柱,将柱击倒。一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下:

(1)若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加两次滚球,不妨称其为第十一轮和第十二轮,并不是所有的情况都需要滚第十一轮和第十二轮球)。该轮得分为本次击倒柱数10与以后两次滚球所击倒柱数之和。

(2)若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加一次滚球),该轮得分为这两次共击倒柱数 1010 与以后一次滚球所击倒柱数之和。

(3)若某一轮两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。

总之,若―轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚球开始的连续三次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足十个,则本轮得分即为这两次击倒柱数之和。下面以实例说明如下(字符“/”表示击倒当前球道上的全部的柱):

轮 1 2 3 4 5 6 7 8 9 10 11 12

击球情况 / / / 72 9/ 81 8/ / 9/ / 8/

各轮得分 30 27 19 9 18 9 20 20 20 20

累计总分 30 57 76 85 103 112 132 152 172 192

现在请你编写一个保龄球实时计分程序,用来计算和显示某轮结束后的得分情况。若某轮的得分暂时无法算出,则该轮得分不显示。

输入输出格式

输入格式:

仅有一行,为前若干轮滚球的情况,每轮滚球用一到两个字符表示,每一个字符表示一次击球,字符“/”表示击倒当前球道上的全部的柱,否则用一个数字字符表示本次滚球击倒的当前球道上的柱的数目,两轮滚球之间用一个空格字符隔开。

如上例对应的输入文件内容为:/ / / 72 9/ 81 8/ / 9/ / 8/

输出格式:

共两行,第一行为每轮得分,第二行为到当前轮为止的总得分。每个得分之间用一个空格隔开。

输入输出样例

输入样例#1: 复制

/    /    /   72    9/   81   8/    /    9/    /   8/

输出样例#1: 复制

30   27  19    9   18    9   20   20   20   20
30   57  76   85  103  112  132  152  172  192思路:模拟,就是比较麻烦,关键是要考虑清楚所有的情况,不要漏掉。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string s;
int d[13];
int df[13][3];
bool y[13][3];
int zdf,l=1,zl=1;
int main(){    getline(cin,s);memset(d,0,sizeof(d));memset(y,0,sizeof(y));memset(df,0,sizeof(df));int x=s.length();for(int i=0;i<x;i++){         if(s[i]==' ')    continue;if(s[i]=='/'){df[zl][l]=10-df[zl][l-1];y[zl][l]=true;if(l==1){ zl++;continue; }}else{df[zl][l]=s[i]-48;y[zl][l]=true;}if(l==2){ ++zl;l=1; }else ++l;}zl--;for(int i=1;i<=zl;i++){if(df[i][1]==10){if(!y[i+1][1])    break;if(df[i+1][1]==10&&(!y[i+2][1]))    break;if(df[i+1][1]<10&&(!y[i+1][2]))    break;d[i]=10+df[i+1][1];if(df[i+1][1]==10)    d[i]+=df[i+2][1];else    d[i]+=df[i+1][2];}else{if(!y[i][2])    break;if(df[i][1]+df[i][2]==10&&(!y[i + 1][1]))    break;d[i]=df[i][1]+df[i][2];if(d[i]==10)    d[i]+=df[i+1][1];}}for(int i=1;i<=zl;i++) {if(d[i]==0)    break;cout<<d[i]<<' ';}puts("");int ans=0;for(int i=1;i<=zl;i++){if(d[i]==0)    break;ans+=d[i];cout<<ans<<' ';}
}

 

转载于:https://www.cnblogs.com/cangT-Tlan/p/9193063.html

洛谷 P1166 打保龄球相关推荐

  1. 洛谷P1166 打保龄球(模拟)

    题目描述 打保龄球是用一个滚球去打击十个站立的柱,将柱击倒.一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分.一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚 ...

  2. 洛谷 P1413 坚果保龄球

    P1413 坚果保龄球 题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zo ...

  3. 洛谷:坚果保龄球(P1413,贪心)

    PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zombie出现的那一秒站在这一行的第 ...

  4. 洛谷——P1413 坚果保龄球

    https://www.luogu.org/problem/show?pid=1413#sub 题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动 ...

  5. [洛谷]P1413 坚果保龄球 (#贪心 -1.18)

    题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zombie出现的那一秒站在 ...

  6. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  7. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  8. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  9. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

最新文章

  1. 神州数码使用telnet方式管理交换机
  2. Dictionary To Dynamic
  3. G20杭州峰会上云 实现0安全事件
  4. PHP 文件夹操作「复制、删除、查看大小」递归实现
  5. 百度景鲲:9月15日发布小度真无线智能耳机
  6. s7填表指令att_第五章 S7-200 指令系统.ppt
  7. XSS-Game level 10
  8. 如何得到所有子对象_对象可能会迟到,但它永远不会缺席
  9. Security log is full,only administrator can log on to fix the problem(安全日志满了)
  10. SNS网站中怎样获取MSN联系人信息
  11. Java实例变量和类变量
  12. Android基础入门教程——4.3.2 BroadcastReceiver庖丁解牛
  13. 计算机无法安装蓝牙驱动,win7电脑蓝牙驱动怎么安装,教您怎么安装
  14. bom_clear.php,金蝶KIS专业版常用SQL语句
  15. linux服务器上配置二级域名
  16. nest 模拟器_如何将Nest Thermostat用作运动探测器
  17. 中国科学院计算机研究所上级单位,陈援非(中国科学院计算技术研究所高工)_百度百科...
  18. Unity3d Platformer Pro 2D游戏开发框架使用教程
  19. C语言代码实现卡塔尔世界杯球员管理系统
  20. 滑滑的、嫩嫩的、又一种美观的字体效果做法!

热门文章

  1. 【POJ2195】Going Home(费用流)
  2. Arthas 的 sc 命令和 sm 命令实战
  3. bootstrap项目实例_Vue.js 项目实践——创建记忆卡片游戏
  4. 转岗数据分析—学习准备篇
  5. 常用学习网站整理【持续更新】
  6. goahead 用action方式实现设备设置
  7. android 拍照 录视频教程,手机如何录制视频,详细录制教程分享给大家
  8. 第三方设置cookie提示Mark cross-site cookies as Secure to allow setting them in cross-site contex
  9. java祝福语_[端午节java祝福语]端午节的祝福语10字
  10. 计网----物理层:EIA-232接口标准与X.21标准