保龄球娱乐计分
2008-02-16 23:47
281 查看
FJNU.1710
Description
保龄球一局分为十盘,每盘是滚一球或两球——如果某盘第一球未击倒十柱,则本盘未结,再滚第二球;如果某盘第一球击倒十柱,则本盘结束,转下一盘。
其计分原则是根据击倒的柱数累加计分,击倒一柱计一分。如果某盘第一球未击倒十柱,则直接把本球所击倒柱数计入分数,如果本盘第二球补击也未把剩余柱数击倒,也直接把本球所击倒柱数计入分数;如果本盘第二球补倒(即把剩余柱数全击倒),则把本球所击倒柱数和下一球的击倒柱数计入本球得分。如果某盘第一球击倒全部十柱(称全倒),则把本球所击倒柱数和下两球的击倒柱数计入本球得分。例如计分过程:
7 2(1st 盘end)6 4(2nd 盘end)8 2 (3rd 盘end) 10(4th盘end) 5 4(5th 盘end) 10(6th盘end) 10(7th盘end) 3 6(8th盘end) 8 1(9th盘end) 9 1(10th盘end) 5(奖一球)
累计分数过程7 9(1st 盘end)15 27(2nd 盘end) 35 47 (3rd 盘end) 66(4th盘end) 71 75(5th盘end) 98(6th盘end) 117(7th盘end) 120 126 (8th盘end) 134 135(9th盘end) 144 150(10th盘end) 155
即本局得155分。
7 2(1st 盘end)6 4(2nd 盘end)8 2 (3rd 盘end) 10(4th盘end) 5 4(5th盘end) 10(6th盘end) 10(7th盘end) 3 6(8th盘end) 8 1(9th盘end) 10(10th盘end) 4 5(奖两球)
累计分数过程7 9(1st 盘end)15 27(2nd 盘end) 35 47 (3rd 盘end) 66(4th盘end) 71 75(5th盘end) 98(6th盘end) 117(7th盘end) 120 126 (8th盘end) 134 135(9th盘end) 154(10th盘end) 158 163
即本局得163分。
7 2(1st 盘end)6 4(2nd 盘end)8 2 (3rd 盘end) 10(4th盘end) 5 4(5th盘end) 10(6th盘end) 10(7th盘end) 3 6(8th盘end) 8 1(9th盘end) 2 2(10th盘end)
累计分数过程7 9(1st 盘end)15 27(2nd 盘end) 35 47 (3rd 盘end) 66(4th盘end) 71 75(5th盘end) 98(6th盘end) 117(7th盘end) 120 126 (8th盘end) 134 135(9th盘end) 137 139(10th盘end)
即本局得139分。
Input
第一行为每局盘数10
Output
本局得分(并换行回车)
Sample Input
10
7 2 6 4 8 2 10 5 4 10 10 3 6 8 1 10 4 5
Sample Output
163
My Program
#include<iostream>
using namespace std;
int *score;
int T;
int CountScore(int next,int tmp)
...{
int x=0,k=0,i=1,t=0;
while(i<=T)
...{
if(score[t]==10)
...{
x+=score[t]+score[t+1]+score[t+2];
i++;
k=0;
t++;
continue;
}
if(k%2)
...{
if(t!=tmp-next+1)
if((score[t]+score[t-1])==10)
x+=score[t]+score[t+1];
else
x+=score[t];
else
x+=score[t];
i++;
k=0;
t++;
continue;
}
else
...{
x+=score[t];
k++;
t++;
}
}
if(next==2)
x+=score[t]+score[t+1];
else
if(next==1)
x+=score[t];
return x;
}
int main()
...{
int k=0,j,x,i=0,t=0,next=0;
cin>>T;
score=new int[T*2];
for(i=0;i<T*2;i++)
score[i]=0;
i=1;
t=0;
while(i<=T)
...{
cin>>x;
if(x==10)
...{
score[t]=10;
if(i==T)
next=2;
i++;
k=0;
t++;
continue;
}
if(k%2)
...{
score[t]=x;
if(i==T)
if((score[t-1]+score[t])!=10)
next=0;
else
next=1;
i++;
k=0;
t++;
continue;
}
else
...{
score[t]=x;
t++;
k++;
}
}
for(j=0;j<next;j++)
...{
cin>>x;
score[t]=x;
t++;
}
x=CountScore(next,t);
cout<<x<<endl;
return 0;
}
YOYO's Note:
主要应该是输入吧……
当时只是想着边读边判断是否有添加球数,是否继续读而已……
为什么好象我代码最长 = = ||
Description
保龄球一局分为十盘,每盘是滚一球或两球——如果某盘第一球未击倒十柱,则本盘未结,再滚第二球;如果某盘第一球击倒十柱,则本盘结束,转下一盘。
其计分原则是根据击倒的柱数累加计分,击倒一柱计一分。如果某盘第一球未击倒十柱,则直接把本球所击倒柱数计入分数,如果本盘第二球补击也未把剩余柱数击倒,也直接把本球所击倒柱数计入分数;如果本盘第二球补倒(即把剩余柱数全击倒),则把本球所击倒柱数和下一球的击倒柱数计入本球得分。如果某盘第一球击倒全部十柱(称全倒),则把本球所击倒柱数和下两球的击倒柱数计入本球得分。例如计分过程:
7 2(1st 盘end)6 4(2nd 盘end)8 2 (3rd 盘end) 10(4th盘end) 5 4(5th 盘end) 10(6th盘end) 10(7th盘end) 3 6(8th盘end) 8 1(9th盘end) 9 1(10th盘end) 5(奖一球)
累计分数过程7 9(1st 盘end)15 27(2nd 盘end) 35 47 (3rd 盘end) 66(4th盘end) 71 75(5th盘end) 98(6th盘end) 117(7th盘end) 120 126 (8th盘end) 134 135(9th盘end) 144 150(10th盘end) 155
即本局得155分。
7 2(1st 盘end)6 4(2nd 盘end)8 2 (3rd 盘end) 10(4th盘end) 5 4(5th盘end) 10(6th盘end) 10(7th盘end) 3 6(8th盘end) 8 1(9th盘end) 10(10th盘end) 4 5(奖两球)
累计分数过程7 9(1st 盘end)15 27(2nd 盘end) 35 47 (3rd 盘end) 66(4th盘end) 71 75(5th盘end) 98(6th盘end) 117(7th盘end) 120 126 (8th盘end) 134 135(9th盘end) 154(10th盘end) 158 163
即本局得163分。
7 2(1st 盘end)6 4(2nd 盘end)8 2 (3rd 盘end) 10(4th盘end) 5 4(5th盘end) 10(6th盘end) 10(7th盘end) 3 6(8th盘end) 8 1(9th盘end) 2 2(10th盘end)
累计分数过程7 9(1st 盘end)15 27(2nd 盘end) 35 47 (3rd 盘end) 66(4th盘end) 71 75(5th盘end) 98(6th盘end) 117(7th盘end) 120 126 (8th盘end) 134 135(9th盘end) 137 139(10th盘end)
即本局得139分。
Input
第一行为每局盘数10
Output
本局得分(并换行回车)
Sample Input
10
7 2 6 4 8 2 10 5 4 10 10 3 6 8 1 10 4 5
Sample Output
163
My Program
#include<iostream>
using namespace std;
int *score;
int T;
int CountScore(int next,int tmp)
...{
int x=0,k=0,i=1,t=0;
while(i<=T)
...{
if(score[t]==10)
...{
x+=score[t]+score[t+1]+score[t+2];
i++;
k=0;
t++;
continue;
}
if(k%2)
...{
if(t!=tmp-next+1)
if((score[t]+score[t-1])==10)
x+=score[t]+score[t+1];
else
x+=score[t];
else
x+=score[t];
i++;
k=0;
t++;
continue;
}
else
...{
x+=score[t];
k++;
t++;
}
}
if(next==2)
x+=score[t]+score[t+1];
else
if(next==1)
x+=score[t];
return x;
}
int main()
...{
int k=0,j,x,i=0,t=0,next=0;
cin>>T;
score=new int[T*2];
for(i=0;i<T*2;i++)
score[i]=0;
i=1;
t=0;
while(i<=T)
...{
cin>>x;
if(x==10)
...{
score[t]=10;
if(i==T)
next=2;
i++;
k=0;
t++;
continue;
}
if(k%2)
...{
score[t]=x;
if(i==T)
if((score[t-1]+score[t])!=10)
next=0;
else
next=1;
i++;
k=0;
t++;
continue;
}
else
...{
score[t]=x;
t++;
k++;
}
}
for(j=0;j<next;j++)
...{
cin>>x;
score[t]=x;
t++;
}
x=CountScore(next,t);
cout<<x<<endl;
return 0;
}
YOYO's Note:
主要应该是输入吧……
当时只是想着边读边判断是否有添加球数,是否继续读而已……
为什么好象我代码最长 = = ||
相关文章推荐
- fjnu 1710 保龄球娱乐计分
- 保龄球计分——java代码实现
- TDD练习:保龄球计分
- 保龄球计分
- java写一个程序给保龄球比赛计分的程序
- 程序设计大赛—保龄球计分系统
- 保龄球-----计分程序
- 保龄球规则计分
- 生活娱乐 WIFI机器人(某机器发烧友自己动手做一台)
- 生活娱乐 测谎软件使用说明
- unity官方教程 太空射击---问题填坑 之 计分以及游戏胜利
- 个人编程娱乐小游戏--三子棋
- 日本娱乐巨头DMM将成立加密货币交易所
- 第33节项目4-大奖赛计分
- 家庭视听娱乐答疑(一)
- 【娱乐】使用ForkJoin实现快速排序/二分查找
- ASP.NET MVC 排球计分程序 (八)排球计分程序的演示
- 【常识】高尔夫计分规则
- 深空娱乐麻将源码房卡多合一编译架设实战教程,深空完整视频教程
- 自己写的java保龄球记分