Я использую простой алгоритм обратного отслеживания, чтобы найти все пути, но он не дает правильного ответа. Я не могу понять ошибку. Мы можем двигаться вверх, вниз, влево и вправо от заданной позиции.Подсчет итогов Пути от (0,0) до (n-1, n-1) в сетке n * n
Int path(int a[][200],int n,int m,int r,int c)
{
if(n == r - 1 && m == c-1) {
return 1;
}
else if(n >= r || m >= c || n < 0 || m < 0) {
return 0;
}
else if(vis[n][m] == 1) {
return 0;
}
else {
vis[n][m] = 1;
int x = path(a,n+1,m,r,c);
int y = path(a,n,m+1,r,c);
int u = path(a,n-1,m,r,c);
int v = path(a,n,m-1,r,c);
vis[n][m] = 0;
return (x+y+u+v);
}
}
Зачем вам нужно написать программу для подсчета общего количества путей? Это просто * (2n!)/(N!)^2 *, нет? –
Можете ли вы переместить назад и влево, или вам разрешено двигаться только вправо и вниз (так обычно задается вопрос)? –
Мои перестановки и комбинации не так сильны. –