Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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;        
    }
}

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny