2014-06-07 39 views
0
import java.util.InputMismatchException; 

    import java.util.Scanner; 

    import java.util.Stack; 

public class TSPNearestNeighbour { 
{ 

     private final Stack<Integer> stack; 
     private int numberOfNodes; 
     public TSPNearestNeighbour() 

     { 

      stack = new Stack<Integer>(); 

     } 



     public void tsp(int adjacencyMatrix[][]) 

     { 

      numberOfNodes = adjacencyMatrix[1].length - 1; 

      int[] visited = new int[numberOfNodes + 1]; 

      visited[1] = 1; 

      stack.push(1); 

      int element, dst = 0, i,cost=0; 

      int min = Integer.MAX_VALUE; 

      boolean minFlag = false; 

      System.out.print(1 + "\t"); 



      while (!stack.isEmpty()) 

      { 

       element = stack.peek(); 

       i = 1; 

       min = Integer.MAX_VALUE; 

       while (i <= numberOfNodes) 

       { 

        if (adjacencyMatrix[element][i] > 1 && visited[i] == 0) 

        { 

         if (min > adjacencyMatrix[element][i]) 

         { 

          min = adjacencyMatrix[element][i]; 

      cost=cost+adjacencyMatrix[element][i]; 

          dst = i; 

          minFlag = true; 

         } 

        } 

        i++; 

       } 

       if (minFlag) 

       { 

        visited[dst] = 1; 

        stack.push(dst); 

        System.out.print(dst + "\t"); 


        minFlag = false; 

        continue; 

       } 

       stack.pop(); 

      } 
System.out.println("total cost" +cost); 
     } 



     public static void main(String args[]) 

     { 

      int number_of_nodes; 

      Scanner scanner = null; 

      try 

      { 

       System.out.println("Enter the number of nodes in the graph"); 

       scanner = new Scanner(System.in); 

       number_of_nodes = scanner.nextInt(); 

       int adjacency_matrix[][] = new int[number_of_nodes + 1][number_of_nodes + 1]; 

       System.out.println("Enter the adjacency matrix"); 

       for (int i = 1; i <= number_of_nodes; i++) 

       { 

        for (int j = 1; j <= number_of_nodes; j++) 

        { 

         adjacency_matrix[i][j] = scanner.nextInt(); 

        } 

       } 

       for (int i = 1; i <= number_of_nodes; i++) 

       { 

        for (int j = 1; j <= number_of_nodes; j++) 

        { 

         if (adjacency_matrix[i][j] == 1 && adjacency_matrix[j][i] == 0) 

         { 

          adjacency_matrix[j][i] = 1; 

         } 

        } 

       } 

       System.out.println("the citys are visited as follows"); 

       TSPNearestNeighbour tspNearestNeighbour = new TSPNearestNeighbour(); 

       tspNearestNeighbour.tsp(adjacency_matrix); 

      } catch (InputMismatchException inputMismatch) 

      { 

       System.out.println("Wrong Input format"); 

      } 

      scanner.close(); 

     } 

    }  



> illegal start of expression in the line: 
>  **private final Stack<Integer> stack;** 
+1

也許你應該做一些努力並根據一些慣例縮進代碼。那麼你也會看到你的問題。 – Seelenvirtuose

+2

我幾乎可以肯定,如果提供的代碼是你所擁有的,那麼問題在這裏:'公共類TSPNearestNeighbour {{'。你有一個額外的支撐。在這種情況下,大括號應該代表一個靜態塊。創建私有變量沒有意義(因爲它在塊內)。 – Jared

回答

5

聲明私有變量,你有2個開括號

public class TSPNearestNeighbour { { 

刪除一個可能是你讓你的代碼編譯

相關問題