C/C++

Помогите плез задачу по с++ решить

Серёжа — профессиональный бармен. Он мешает коктейли. Сейчас в коктейле N разноцветных слоёв, каждый слой обозначен некоторой строчной латинской буквой (одинаковые слои — одинаковыми буквами, разные слои — разными буквами).

Серёжа хочет сделать коктейль красивым. У него весьма своебразное понятие красоты: коктейль Серёжа считает красивым, если он весь одного цвета. Чтобы этого добиться, Серёжа может делать перемешивания: за одно перемешивание каждый слой, кроме последнего, либо остаётся такого же цвета, либо меняет цвет на цвет следующего слоя; а самый последний слой расплёскивается и исчезает.
Серёжа не хочет разливать слишком уж много коктейля. Помогите ему: скажите, за какое минимальное число перемешиваний Серёжа может сделать коктейль красивым.
 #include 
#include
#include
#include
using namespace std;


void shift(vector& arr) //сдвиг всех еденичек влево
{
for (int i = 1; i < arr.size(); i++)
if (!arr[i - 1]) if (arr[i]) arr[i - 1] = 1;
}

int barman(vector arr) //подсчет перемешиваний
{
int counte{}; //число необходимых перемешиваний
while (arr.size())
{
int check = 1;
for (auto& i : arr) check *= i; //проверка матрицы на красоту
if (check) return counte; //если красивая - возвращаем результат
shift(arr); //иначе перемешиваем
arr.pop_back(); //и удаляем последний слой
counte++;
}
return counte;
}

int main()
{
string s;
getline(cin, s);
vector < vector > variants; //матрицы из символов с числом больше 1
map fuu_map; //кол-во символов
for (auto& i : s) fuu_map[i]++; //подсчет символов в строке
auto it = fuu_map.begin();
while (it != fuu_map.end()) //строим варианты для проверки
{
if (it->second > 1)
{
vector temp(s.size());
for (int i = 0; i < s.size(); i++) temp[i] = (s[i] == it->first) ? 1 : 0; //построение матрицы 1/0
variants.push_back(temp); //запоминание ее
}
it++;
}
if (!variants.size()) { cout steps) min = steps;
}
cout
ЭБ
Эдуард Балян
51 416
Лучший ответ
Алексей Уточкин Можешь пожалуйста вкратце объяснить принцип работы?
Вот это "каждый слой, кроме последнего, либо остаётся такого же цвета, либо меняет цвет на цвет следующего слоя" непонятно. При каких условиях выполняется первое (остается), а в каких второе (меняется) ?
я что похож на абонента?
Максим Пукас
Максим Пукас
1 982