Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. import edu.princeton.cs.algs4.DijkstraSP;
  2. import edu.princeton.cs.algs4.DirectedEdge;
  3. import edu.princeton.cs.algs4.EdgeWeightedDigraph;
  4. import edu.princeton.cs.algs4.In;
  5. import edu.princeton.cs.algs4.StdOut;
  6.  
  7. public class Maze {
  8.  
  9. public static void main(String[] args) {
  10.  
  11.  
  12. String[] lines = new In("maze.txt").readAllLines();
  13. int l = 0;
  14. int c = 0;
  15. int hnutar = 0;
  16. int I = 0;
  17. int U = 0;
  18. int[][] hnitakerfi = new int[lines.length][lines[0].length()];
  19. for (String s : lines){
  20. for(int i = 0; i < lines[0].length(); i++){
  21. if (s.charAt(c) == 'X'){
  22. hnitakerfi[l][c] = -1;
  23. }
  24. else if (s.charAt(c) == '='){
  25. hnitakerfi[l][c] = 2;
  26. }
  27. else if (s.charAt(c) == '-'){
  28. hnitakerfi[l][c] = 1;
  29. }
  30. else if (s.charAt(c) == 'I'){
  31. hnitakerfi[l][c] = 0;
  32. I = 10*l+c;
  33. }
  34. else if (s.charAt(c) == 'U'){
  35. hnitakerfi[l][c] = 1;
  36. U = 10*l+c;
  37. }
  38. c++;
  39. hnutar++;
  40. }
  41. l++;
  42. c = 0;
  43. }
  44.  
  45. EdgeWeightedDigraph net = new EdgeWeightedDigraph(hnutar);
  46.  
  47. for(int i = 0; i<lines.length; i++){
  48. for(int j = 0; j<lines[0].length(); j++){
  49. if(hnitakerfi[i][j] != -1){
  50. if (i != 0 && hnitakerfi[i-1][j] != -1){
  51. DirectedEdge e = new DirectedEdge(10*i+j,10*i+j-10,(double) hnitakerfi[i-1][j]);
  52. net.addEdge(e);
  53. }
  54. if (j != 0 && hnitakerfi[i][j-1] != -1){
  55. DirectedEdge e = new DirectedEdge(10*i+j,10*i+j-1,(double) hnitakerfi[i][j-1]);
  56. net.addEdge(e);
  57. }
  58.  
  59. if (i != lines.length-1 && hnitakerfi[i+1][j] != -1){
  60. DirectedEdge e = new DirectedEdge(10*i+j,10*i+j+10,(double) hnitakerfi[i+1][j]);
  61. net.addEdge(e);
  62. }
  63. if (j != lines[0].length()-1 && hnitakerfi[i][j+1] != -1){
  64. DirectedEdge e = new DirectedEdge(10*i+j,10*i+j+1,(double) hnitakerfi[i][j+1]);
  65. net.addEdge(e);
  66. }
  67. }
  68. }
  69.  
  70. }
  71.  
  72. DijkstraSP styst = new DijkstraSP(net, I);
  73. for (DirectedEdge e : styst.pathTo(U)) {
  74. StdOut.print("(" + e.from()/10 + "," + e.from()%10 + ") -> (" + e.to()/10 + "," + e.to()%10 + ")");
  75. StdOut.println();
  76. }
  77. StdOut.println();
  78.  
  79.  
  80.  
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement