Hallo,
ich habe folgendes Problem:
In meinem Programm gibt es sechs Orte die nacheinander in beliebiger Reihenfolge abgefahren werden müssen. Insgesamt 120 Möglichkeiten. Herauskommen muss am Ende die kürzeste Strecke in Kilometer sowie die Reihenfolge der besuchten Orte dieser kürzesten Strecke!
Ich habe das Programm soweit geschrieben das es mir die kürzeste Strecke ausgibt, lediglich die Ortsreihenfolge kann ich nicht ausgeben
Hier der Quellcode:
Alles anzeigen
Ich bin fuer jeden noch so kleinen Tipp oder jede noch so kleine Hilfe dankbar
Vielen Dank schon mal für eure Mühen!
ich habe folgendes Problem:
In meinem Programm gibt es sechs Orte die nacheinander in beliebiger Reihenfolge abgefahren werden müssen. Insgesamt 120 Möglichkeiten. Herauskommen muss am Ende die kürzeste Strecke in Kilometer sowie die Reihenfolge der besuchten Orte dieser kürzesten Strecke!
Ich habe das Programm soweit geschrieben das es mir die kürzeste Strecke ausgibt, lediglich die Ortsreihenfolge kann ich nicht ausgeben

Hier der Quellcode:
Quellcode
- public class streckenberechnung {
- static double gereistArray[] = new double [120];
- static boolean warDa[] = new boolean [6];
- static int i,j,k,l,m,o,ort,p,q;
- static double[][] entfern = { {0,13,34,31,19,9.5},
- {13,0,37,24,32,22},
- {34,37,0,61,41,43},
- {31,24,61,0,41,28},
- {19,32,41,41,0,11},
- {9.5,22,43,28,11,0}
- };
- static double summe = 0;
- static int temp = 0;
- static double summe2 = 1000;
- static double ortArray[] = new double [120];
- public static void main(String[] args){
- warDa[0] = true;
- for (i=0;i<6;i++){
- if (warDa[i]== false) {
- warDa[i] = true;
- //System.out.println("0"+i);
- for(j=0;j<6;j++) {
- if(warDa[j]==false){
- warDa[j]=true;
- //System.out.println("0"+i+j);
- for (k=0;k<6;k++) {
- if(warDa[k]==false){
- warDa[k]=true;
- //System.out.println("0"+i+j+k);
- for (l=0;l<6;l++) {
- if(warDa[l]==false){
- warDa[l]=true;
- //System.out.println("0"+i+j+k+l);
- for (m=0;m<6;m++) {
- if(warDa[m]==false){
- warDa[m]=true;
- System.out.println("0"+i+j+k+l+m);
- warDa[m]=false;
- summe = entfern[0][i]+entfern[i][j]+entfern[j][k]+entfern[k][l]+entfern[l][m]+entfern[m][0];
- System.out.println("Kilometer: "+summe);
- //Abfrage um die kürzeste Strecke heraus zu finden
- gereistArray[temp]=summe;
- if (gereistArray[temp]<summe2){
- summe2 = gereistArray[temp];
- }
- ortArray[temp] = entfern[0][i]+entfern[i][j]+entfern[j][k]+entfern[k][l]+entfern[l][m]+entfern[m][0];
- temp = temp+1;
- }
- }
- warDa[l]=false;
- }
- }
- warDa[k]=false;
- }
- }
- warDa[j]=false;
- }
- }
- warDa[i]= false;
- }
- }
- System.out.println();
- System.out.println("kuerzeste Strecke: "+summe2+" km");
- //Versuch den Ort auszugeben bzw. eine Hilfsschleife hierfuer
- for (p=0;p<120;p++){
- if (ortArray[p] == summe2){
- System.out.println("Route: "+ortArray[p]);
- }
- }
- }
- }
Ich bin fuer jeden noch so kleinen Tipp oder jede noch so kleine Hilfe dankbar

Vielen Dank schon mal für eure Mühen!