Witam, potrzebuje pomocy w konstrukcji rekurencji dotyczącej pewnego zadania algorytmicznego. Zadanie polega na dzieleniu czekolady na mniejsze kawałki by w efekcie otrzymać jak najmniejsze kawałki ALE
-
Czekoladę można dzielić tak jak fizyczna kostkę czekolady czyli wzdłuż bruzd pionowo i poziomo
-
Nie można dokonać dzielenia jeżeli w jego wyniku powstaną jednokolorowe kawałki(np kawałek czarny-biały już się nie podzieli bo kolejny podział to dwa kawałki tylko biały i tylko czarny)
-
Funkcja powinna zwracać tzw bilans czyli różnice kawałków których jest więcej od tych których jest mniej (np biały biały czarny, wtedy bilans równy 2-1), bilans jest liczony dla każdego podziału i na końcu zwracana jest suma bilansów.
Udało mi się napisać kod dla pierwszego dzielenia tzn jestem w stanie powiedzieć gdzie i jak (pion czy poziom) należny połamać czekoladę dla jak najmniejszego bilansu pierwszego dzielenia. Problemem jest rekurencja, nie wiem jakie zastosować warunki w przypadku sytuacji ccbb(czarny czarny bialy bialy) której już nie można podzielić natomiast cbbc już można. Wiem ze warunek końcowy rekurencji to minimum jedna kostka czarna lub biała ale nie sprawdzi się w sytuacji ccbb.
Załączam ilustracje(pierwsza z lewej to najlepszy sposob rozwiazania)