Java

Логическая задача. Информатика

Уважаемые джависты и просто логически мыслящие люди, которые попадут на этот вопрос, подскажите мне, есть ли какой-нибудь алгоритм для решения этой задачи? Какой-нибудь граф или формула? Или надо просто тупо прорисовать все пути??? Ну не может же быть настолько глупое решение.
Помогите, пожалуйста. Моих немногочисленных извилин не хватает.
в юности в компьютерном кружке для решения логических задач нам выдавали листок и ручку.
эта тоже решается без рекурсии да и вообще без компьютера.

так как двигаться мы можем только вниз и вправо, то количеством путей от текущей клетки до конца будет суммарное количество путей от нижней и правой клеток до конца.
поэтому заполнять таблицу будем снизу вверх и справа налево - от конца к началу:

в конечную клетку ставим число 1.
далее в каждую следующую клетку записываем сумму значений правой и нижней клеток от нее.
закрашенные клетки оставляем пустыми.
ответ будет в первой клетке.

c++ https://ideone.com/1d8y6b

int row[width + 1] = {};
row[width - 1] = 1;

for (int y = height - 1; y >= 0; y--) {
for (int x = width - 1; x >= 0; x--) {
row[x] = maze[y][x] ? 0 : row[x] + row[x + 1];
}
}
Suhrob <<<<<Xxx>>>>>
Suhrob <<<<<Xxx>>>>>
7 029
Лучший ответ
Банальнейшая рекурсия. Тупо перебираем все возможные пути.

static int[][] matrix = {
{0, 0, 0, 0, 0, 1, 1, 1},
{0, 0, 1, 0, 0, 0, 0, 1},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 0, 0, 0, 1, 0, 0},
{1, 1, 0, 0, 0, 0, 0, 0}
};

static int cnt(int x, int y) {
if (x == 7 && y == 7) { return 1; } // Достигли точки назначения
if (x >= 8 || y >= 8 || matrix[y][x] != 0) { return 0; } // Упёрлись или выскочили за пределы
return cnt(x, y + 1) + cnt(x + 1, y); // Движемся в обе стороны
}

public static void main(String[] args) {
System.out.println(cnt(0, 0)); // Вычисляем и печатаем ответ
}
Мухаммед Мамырбеков А можно на С++, пожалуйста? :)
Я понимаю, что это Джава-тред, но эта необходимость возникла внезапно, а я не слишком (от слова "вообще") разбираюсь в Джаве, чтобы перевести самому, а знания в синтаксисе C++ у меня, хотя бы, чуть больше, чем никакие.
Очень даже просто!
Один путь Я точно нашла, а остальные ищи сам аналогичным способом)

Вниз, вправо, вниз, вправо, вниз, вправо, вверх, вправо, вниз, вправо, вниз, вправо, вниз, вправо, вниз, влево, вниз, вправо)
Виталий Кохан
Виталий Кохан
10 132
Тупо прорисуй все пути)
GL
Geka Larionov
244
Это клетка похожа на матрицу
Это изи. Черти просто как ему двигаться