Боулинг
(Время: 1 сек. Память: 16 Мб Сложность: 29%)
Алгоритм решения данной задачи фактически описан в ее условии. Здесь требуется лишь аккуратная реализация процесса подсчета очков. При этом удобно использовать 2 параметра: i - номер тура, n - номер броска. Пробегая в цикле по турам возможно вычислять число бросков в туре и осуществлять подсчет очков. Алгоритмическая реализация данной задачи:
//чтение массива бросков
read(n)
for i=1..n read(a[i])
n=s=0
//цикл по номеру тура
for i=1..10{
n=n+1
c=a[n]
//если strike, то добавляем очки за следующие 2 броска
if(c=10) s=s+10+a[n+1]+a[n+2]
else{
n=n+1
d=a[n]
//если spare, то добавляем очки за следующий бросок
if c+d=10 then s:=s+10+a[n+1] else s:=s+c+d
}
}
write(s)
|