Я пытаюсь напечатать шаги, ведущие к ответу, но не попадающие никуда. Пожалуйста, обратитесь к этому изображению:Сложность понимания рекурсии головоломки
я могу проверить, если данная проблема разрешима или нет:
bool Solvable(int a[], int index, int target, int sz, int b[]) {
static int b_ind = 0;
if (target == 0 && index == sz-1)
return true;
if (index >= sz || index < 0)
return false;
int u_ind = index+a[index];
int d_ind = index-a[index];
bool u_y = Solvable(a,u_ind,a[u_ind],sz,b);
if (u_y) {
b[b_ind++] = u_ind;
return u_y; }
else {
bool d_y = Solvable(a,d_ind,a[d_ind],sz,b);
if (d_y) {
b[b_ind++] = d_ind;
return d_y; }
}
}
, но я не в состоянии напечатать последовательность индексов посетил правильный решение.
Не могли бы вы расклеить всю проблему без использования ссылка пожалуйста? (Поскольку они имеют тенденцию ломаться). Также подробно расскажите, что вы достигли до сих пор. – Bathsheba
Я могу проверить, разрешена ли данная проблема или нет: bool Solvable (int a [], int index, int target, int sz, int b []) { static int b_ind = 0; if (target == 0 && index == sz-1) return true; if (index> = sz || index <0) return false; int u_ind = index + a [index]; int d_ind = index-a [index]; bool u_y = Solvable (a, u_ind, a [u_ind], sz, b); if (u_y) { b [b_ind ++] = u_ind; return u_y; } else { bool d_y = Solvable (a, d_ind, a [d_ind], sz, b); if (d_y) b [b_ind ++] = d_ind; return d_y; } } – Skartik
, но я не могу напечатать последовательность посещенных индексов для правильного решения. – Skartik