A
SeppJ schrieb:
- Anfangen in einer Ecke (Zeile 62)ist geschickt gewählt.
Was aber von der genauen Problemstellung abhängt. Wenn nur geschlossene Wege gesucht werden, ist das Anfangsfeld eigentlich egal.
Wenn jedoch auch offene Wege zulässig sind oder Lösungen gar nur unter den offenen zu finden sind, muss das Startfeld variiert werden.
Wenn man die Möglichkeiten des Springers und die quadratische Form berücksichtigt, braucht man nicht alle Felder als Startfelder austesten. Wegen der dreifachen Achsensymmetrie (waagerecht, senkrecht, diagonal) reicht bereits ein großzügiges Achtel des Feldes, um auch offene Wege zu finden:
int main()
{
int field[N][N] = {};
int start_x,start_y;
for (start_x = 0; start_x*2 < N; start_x++)
for (start_y = 0; start_y <= start_x; start_y++)
{
field[start_x][start_y] = 1;
puts("Starting configuration:");
print_field(field);
solve_KT(start_x, start_y, 2, field);
field[start_x][start_y] = 0;
}
return 0;
}
Ciao, Allesquatsch