Посчитайте, какое минимальное количество камней нужно убрать со стола - Free Pascal
Формулировка задачи:
Помогите пожалуйста решить:
На столе в ряд выложены n камней, каждый из которых может быть красного, зеленого или синего цвета. Посчитайте, какое минимальное количество камней нужно убрать со стола, чтобы любые два соседних камня имели разные цвета. Камни в ряду считаются соседними, если между ними нет других камней.
Входные данные
В первой строке задано целое число n (1 ≤ n ≤ 50) — количество камней на столе. В следующей строке задана строка s, обозначающая цвета камней. Будем считать, что камни в ряду пронумерованы целыми числами от 1 до n слева направо. Тогда i-ый символ s равен «R», если i-ый камень красного цвета, «G» — если он зеленого цвета, и «B» — если он синего цвета.Выходные данные
Выведите единственное целое число — ответ на задачу.Примеры тестов
входные данные
3 RRGвыходные данные
1входные данные
5 RRRRRвыходные данные
4входные данные
4 BRBGвыходные данные
0Решение задачи: «Посчитайте, какое минимальное количество камней нужно убрать со стола»
textual
Листинг программы
var s:string;
i,n,t:integer;
begin
Writeln('Vhodnie dannie:');
Readln(n);
Readln(s);
Writeln;
Writeln('Vihodnie dannie:');
t:=0;
for i:=2 to Length(s) do
if s[i]=s[i-1] then Inc(t);
Writeln(t);
Readln;
end.
Объяснение кода листинга программы
- Объявлены три переменные: s (строка), i (целое число), n (целое число).
- Выводится сообщение
Входные данные:. - Пользователь вводит строку и число, нажав Enter после каждого ввода.
- Выводится сообщение
Выходные данные:. - Переменная t инициализируется значением 0.
- Происходит цикл от 2 до длины строки (используется Length(s)).
- Если текущий символ равен предыдущему, то к переменной t прибавляется 1.
- После окончания цикла выводится значение переменной t.
- Программа ожидает ввода от пользователя, чтобы закрыться.