000
26.05.2004, 20:10 Uhr
~freak
Gast
|
hi ...
ich habe zur Zeit folgendes Programm ...
mittels dieses Backtracking Algorithmus findet die maus die in Zelle 4/1 startet den Käse ... und markiert ihren Weg mit ':' ...
Und nun auch schon zu meiner Frage ...
ich möchte den Weg nicht nur mit ':' markieren sondern mit den Zeichen
< für links > für rechts v für unten und ^ für oben ...
anstatt folgender ausgabe ...
X@ ::: : :X: : :X::: ::XX
möchte ich also folgende haben ...
X@ >>v ^ ^Xv^ ^X>^ ^<XX
weg wird mit diesem programm immer nur irgendeiner gesucht ...
ist das irgendwie leicht möglich ... kann mir da wer helfen ... wäre super ...
danke ...
C++: |
/************************************************************** Labyrinth: Eine Maus starten in Zelle 4/1 und soll den Kaese finden. Beispiel fuer einen Backtracking-Algorithmus **************************************************************/
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring>
using std::cout; using std::cin; using std::cerr; using std::endl;
#define n 5 // Labyrinthgröße bool Ende = false; char feld[n][n]={ {' ',' ',' ','X','@'}, {' ',' ',' ',' ',' '}, {' ','X',' ',' ',' '}, {' ','X',' ',' ',' '}, {' ',' ','X','X',' '} }; // ' ' = Weg, 'X' = Mauer, '@' = Käse
void mauszug(int spalte, int zeile) {
if (Ende != true)
{ if ((spalte >= 0 && zeile >= 0 && spalte < n && zeile < n && feld[spalte][zeile] != 'X' && feld[spalte][zeile]!=':') && (Ende != true)) { // Zug trifft Labyrinth und Feld ist noch frei if (feld[spalte][zeile] == '@') { // Käse gefunden!!!!!
Ende = true; } // if else { if (Ende != true) feld[spalte][zeile]=':'; // Feld als besetzt markieren
mauszug(spalte+1, zeile); // rekursive Aufrufe mauszug(spalte, zeile+1); mauszug(spalte-1, zeile); mauszug(spalte, zeile-1);
//if (Ende != true) //if (allesausgeben) ausgabe(""); if (Ende != true) feld[spalte][zeile]=' '; // Feld freigeben!!! } // else } // if } } // mauszug
int main() {
mauszug(4, 1);
cout << feld[0][0]; cout << feld[0][1]; cout << feld[0][2]; cout << feld[0][3]; cout << feld[0][4]; cout << endl;
cout << feld[1][0]; cout << feld[1][1]; cout << feld[1][2]; cout << feld[1][3]; cout << feld[1][4]; cout << endl;
cout << feld[2][0]; cout << feld[2][1]; cout << feld[2][2]; cout << feld[2][3]; cout << feld[2][4]; cout << endl;
cout << feld[3][0]; cout << feld[3][1]; cout << feld[3][2]; cout << feld[3][3]; cout << feld[3][4]; cout << endl;
cout << feld[4][0]; cout << feld[4][1]; cout << feld[4][2]; cout << feld[4][3]; cout << feld[4][4]; cout << endl;
system("PAUSE"); return 0; }
|
|