打保龄球是用一个滚球去打出十个站立的柱,将柱击倒。一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的;滚球情况有关。即,某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下:
(1) 若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球。(若是第十轮则还需另加两次滚球)。该轮得分为本次倒柱数 10 与以后两次滚球所击倒柱数之和。
(2) 若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加一次滚球),该轮得分为本次倒柱数10与以后一次滚球所击倒柱数之和。
(3) 若某一轮的两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数这和。
总之,若一轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚球开始的连续三次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足十个,则本轮得分即为这两次击倒柱数之和。
以实例说明如下:
轮 1 2 3 4 5 6 7 8 9 10
每轮得分:[/code]
9|/,6|3,8|/,7|2,X| ,X| ,X| ,4|5,8|/,X|7|/
要求:
录入每轮的得分情况,得出总分与每轮分数。
public class Ball {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
String score = is.readLine();
String[] cores = score.split(",");
String[][] scores = new String[cores.length][3];
for(int i=0;i score(String[][] scores){
ArrayList list = new ArrayList();
for(int j=0;j list){
int sum = 0, csum = 0, count = 0;
for(int i=0;i= 10){
if(csum == 10){
csum += list.get(i+2);
i += 2;
}else{
csum += list.get(i+2);
i += 1;
}
}else{
i += 2;
}
sum += csum;
System.out.println("第"+(count+1)+"轮得分为:"+csum);
}
return sum;
}
}
//测试数据:
//9|/,6|3,8|/,7|2,X| ,X| ,X| ,4|5,8|/,X|7|/
//9|/,6|/,8|/,7|/,X| ,X| ,9|0,4|/,8|/,7|2
//
将每轮每次击球所得分放入list中(每一轮最少击球一次,第十轮最多击球三次),不击球则不算分,击空算零分,仍要放入list中。
加入计数器计数每轮所得分数后合计。
(1) 若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球。(若是第十轮则还需另加两次滚球)。该轮得分为本次倒柱数 10 与以后两次滚球所击倒柱数之和。
(2) 若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加一次滚球),该轮得分为本次倒柱数10与以后一次滚球所击倒柱数之和。
(3) 若某一轮的两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数这和。
总之,若一轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚球开始的连续三次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足十个,则本轮得分即为这两次击倒柱数之和。
以实例说明如下:
轮 1 2 3 4 5 6 7 8 9 10
每轮得分:[/code]
9|/,6|3,8|/,7|2,X| ,X| ,X| ,4|5,8|/,X|7|/
要求:
录入每轮的得分情况,得出总分与每轮分数。
public class Ball {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
String score = is.readLine();
String[] cores = score.split(",");
String[][] scores = new String[cores.length][3];
for(int i=0;i score(String[][] scores){
ArrayList list = new ArrayList();
for(int j=0;j list){
int sum = 0, csum = 0, count = 0;
for(int i=0;i= 10){
if(csum == 10){
csum += list.get(i+2);
i += 2;
}else{
csum += list.get(i+2);
i += 1;
}
}else{
i += 2;
}
sum += csum;
System.out.println("第"+(count+1)+"轮得分为:"+csum);
}
return sum;
}
}
//测试数据:
//9|/,6|3,8|/,7|2,X| ,X| ,X| ,4|5,8|/,X|7|/
//9|/,6|/,8|/,7|/,X| ,X| ,9|0,4|/,8|/,7|2
//
将每轮每次击球所得分放入list中(每一轮最少击球一次,第十轮最多击球三次),不击球则不算分,击空算零分,仍要放入list中。
加入计数器计数每轮所得分数后合计。