Zum Inhalt springen

Morbo

Mitglieder
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

  1. Morbo

    Hamilton Pfad ??

    Hey danke fuer die Antwort. Ich habs im Endeffekt Sonntag morgen um 6 Uhr hinbekommen! ... ich hatte vorher echt voll den Denkfehler drin... ciao, Timm
  2. Morbo

    Hamilton Pfad ??

    Ja du hast Recht, vielleicht ist das praktischer. Ich habe hier eine Form von dem Code (hab mindestens 6 verschiedene und jedes Mal was Neues probiert). Ach so und es ist auf niederlaendisch, aber ich schreib mal dazu was da so theoretisch passieren sollte: import java.io.*; import java.util.*; public class Hamilton { public static int[][]weg; public static int[]pad; public static int lengte; public static void main(String[] args) { weg = new int[18][3]; //die verschiedenen Wege werden darin gesp. pad = new int[0]; // hier wird der jetzige Pfad gesp. try{ inlezen("graafhamilton.txt"); } catch(Exception e) {} } public static void inlezen(String invoer) // liest den Text mit den Wegen ein throws Exception { File file = new File(invoer); Scanner scanner = new Scanner(file); while(scanner.hasNext()) { int a, b, c; a = scanner.nextInt(); b = scanner.nextInt(); c = scanner.nextInt(); weg[a][b] = c; weg[b][a] = c; } zoekPad(1,0); // Pfad beginnt immer bei 1, und Laenge ist erstmal 0 } public static void zoekPad(int begin, int lengte) //sucht einen Pfad { if(pad.length == 13) // ein Pfad besteht aus 13 Punkten, dann { // ausdrucken print(); pad = new int[1]; // neuer Pfad begin = 1; pad[0] = begin; lengte = 0; } for(int eind = 0; eind < 18; eind++) // geht alle Reihen im Array durch { if(feasible(begin,eind)) // schaut ob der Pfad ueberhaupt besteht { registreer(eind); // speichert den Pfad in nem anderen Array zoekPad(eind, lengte+weg[begin][eind]); // rekursiv, ruft die // Methode wieder auf mit dem neuen Punkt //deregistreer(eind); // falls der weg nicht zuende gefuehrt } // werden kann, muss der Punkt wieder } // aus dem Array raus. Mein groesstesProblem! } public static void registreer(int nieuwPunt) // registreert den Pfad { int[] nieuwPad = new int[pad.length+1]; for(int i = 0; i< pad.length;i++) { nieuwPad[i] = pad[i]; } nieuwPad[nieuwPad.length-1] = nieuwPunt; pad = new int[pad.length+1]; for(int i = 0; i < pad.length;i++) { pad[i] = nieuwPad[i]; } } public static boolean feasible(int begin, int eind) { for(int i = 0; i<pad.length;i++) // checkt obs den Punkt im Pfad schon gibt { if(pad[i] == eind) { return false; } } if(weg[begin][eind] == 0) //checkt obs den Weg zw. den Punkten ueberhaupt gibt { return false; } return true; } public static void print() { for(int i = 0; i < pad.length; i++) // druckt den Pfad aus { System.out.print(pad[i]); } System.out.println(lengte); // und die Laenge } } Ja also es ist vll nicht ganz uebersichtlich. Ich glaub,dass es nen Logikfehler ist, aber ich komm da einfach nicht dahinter. Wenn du ne Idee hast, waer ich dir sehr dankbar. ciao Timm
  3. Hallo! vielleicht kann mir jemand von euch weiterhelfen!? ..ich haeng schon seit ner gewissen Zeit am rumprogrammieren um alle moeglichen Pfade (von eingelesenen Knotpunkten) durchzugehen. Das Ganze ist in Java und ich bin absolut am verzweifeln weil ich nicht weiss was da falsch laeuft. Naja vielleicht weiss einer von euch Bescheid und kann mir nen guten Tipp geben? Waer auf jeden Fall sehr dankbar dafuer ! ciao, Timm

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...