Для решения данной задачи воспользуемся методом динамического программирования. Состоянием будет характеризоваться позицией клетки, из которой начали путь, числом поворотов и направлением в котором идем. Будем хранить максимальное число шашек, которое перепрыгнули на таком пути.
Так как поворотов не более два, то если мы запретим поворачивать дважды в одной клетке, любой наш путь с не более, чем двумя поворотами не будет иметь самопересечений. Заметим, что интересных нам клеток немного, так как нас интересуют только клетки соседние с клетками с черными шашками или с белой шашкой, поэтому можно сжать координаты и тогда состояний динамики будет O(n).
Также заметим, что значение динамики в клетке, зависит только от значения в соседней в заданном направлении клетки, и от значения в соседних в направлениях перпендикулярным нашему с числом поворотов на единицу меньше. То есть всего O(1) переходов.
Ответом будет максимум посчитанных значений. Итоговая сложность O(n) на подсчет состояний и на сжатие координат.