
C - Nalezení všech cest v poli
Dobrý den,
chci projít pole všemi možnými způsoby. Při zvolení čísla 9 za POCET (pole 7*7) je již doba výpočtu neúnosná. Co teprve, kdybych chtěl někam cesty vypsat. Jak je tuto úlohu možné realizovat s nižší časovou složitostí?
Díky za odpověď
#include <stdio.h>
#include <stdlib.h>
#define POCET 9 // Velikost pole +2 pro okraje
void init();
void jdi(int x, int y);
int mrizka[POCET][POCET]; // Prochazene pole + okraj pro snizeni poctu podminek
int main(void)
{
init();
jdi(1, 1);
return 0;
}
void init()
{
for (int i = 0; i < POCET; i++) { // Naplneni pole+okraje jednickami
for (int j = 0; j < POCET; j++) {
mrizka[i][j] = 1;
}
}
for (int i = 1; i < POCET-1; i++) { // Naplneni pole nulami
for (int j = 1; j < POCET-1; j++) {
mrizka[i][j] = 0;
}
}
}
void jdi(int x, int y)
{
mrizka[x][y] = 1;
if (mrizka[x+1][y] == 0) {
jdi(x+1, y);
mrizka[x+1][y] = 0;
}
if (mrizka[x-1][y] == 0) {
jdi(x-1, y);
mrizka[x-1][y] = 0;
}
if (mrizka[x][y+1] == 0) {
jdi(x, y+1);
mrizka[x][y+1] = 0;
}
if (mrizka[x][y-1] == 0) {
jdi(x, y-1);
mrizka[x][y-1] = 0;
}
}