您的位置:首页 > 其它

保龄球娱乐计分

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:
主要应该是输入吧……
当时只是想着边读边判断是否有添加球数,是否继续读而已……
为什么好象我代码最长 = = ||
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: