Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. 24
  2. (1,10) (4,4) (5,1) (2,0) (1,10)
  3. (1,10) (4,4) (2,0) (5,1) (1,10)
  4. (1,10) (5,1) (4,4) (2,0) (1,10)
  5. (1,10) (5,1) (2,0) (4,4) (1,10)
  6. (1,10) (2,0) (5,1) (4,4) (1,10)
  7. (1,10) (2,0) (4,4) (5,1) (1,10)
  8. (4,4) (1,10) (5,1) (2,0) (4,4)
  9. (4,4) (1,10) (2,0) (5,1) (4,4)
  10. (4,4) (5,1) (1,10) (2,0) (4,4)
  11. (4,4) (5,1) (2,0) (1,10) (4,4)
  12. (4,4) (2,0) (5,1) (1,10) (4,4)
  13. (4,4) (2,0) (1,10) (5,1) (4,4)
  14. (5,1) (4,4) (1,10) (2,0) (5,1)
  15. (5,1) (4,4) (2,0) (1,10) (5,1)
  16. (5,1) (1,10) (4,4) (2,0) (5,1)
  17. (5,1) (1,10) (2,0) (4,4) (5,1)
  18. (5,1) (2,0) (1,10) (4,4) (5,1)
  19. (5,1) (2,0) (4,4) (1,10) (5,1)
  20. (2,0) (4,4) (5,1) (1,10) (2,0)
  21. (2,0) (4,4) (1,10) (5,1) (2,0)
  22. (2,0) (5,1) (4,4) (1,10) (2,0)
  23. (2,0) (5,1) (1,10) (4,4) (2,0)
  24. (2,0) (1,10) (5,1) (4,4) (2,0)
  25. (2,0) (1,10) (4,4) (5,1) (2,0)
  26.  
  27. float Distancia(Cidade cA, Cidade cB)
  28. {
  29. int distanciaX = pow(cA.x - cB.x, 2);
  30. int distanciaY = pow(cA.y - cB.y, 2);
  31. float distancia = sqrt(distanciaX + distanciaY);
  32. return distancia;
  33. }
  34.  
  35. float Distancias(Cidade *C, int numeroCidades)
  36. {
  37. int i;
  38. float total = 0;
  39. for(i = 0; i < numeroCidades; i++)
  40. {
  41. if(i == numeroCidades - 1)
  42. {
  43. total = total + Distancia(C[i], C[0]);
  44. }
  45. else
  46. {
  47. total = total + Distancia(C[i], C[i+1]);
  48. }
  49. }
  50. return total;
  51. }
  52.  
  53. float MenorDistancia(Cidade *C, int numeroCidade)
  54. {
  55. int i;
  56. float distancias[numeroCidade];
  57. float menor = distancias[0];
  58. for(i = 0; i < numeroCidade; i++)
  59. {
  60. distancias[i] = Distancias(C, numeroCidade);
  61. if(distancias[i] < menor)
  62. menor = distancias[i];
  63. }
  64. return menor;
  65. }
  66.  
  67. void Permuta(FILE *saida, Cidade *C, int *sequencia, int inicio, int
  68. termino)
  69. {
  70. int i, j;
  71. if(inicio == termino)
  72. {
  73. for(i = 0; i < termino; i++)
  74. {
  75. fprintf(saida, "(%d,%d) ", C[sequencia[i]].x,
  76. C[sequencia[i]].y);
  77. }
  78. fprintf(saida, "(%d,%d)n", C[sequencia[0]].x, C[sequencia[0]].y);
  79. }
  80. else
  81. {
  82. for(j = inicio; j < termino; j++)
  83. {
  84. Troca((sequencia+inicio), (sequencia+j));
  85. Permuta(saida, C, sequencia, inicio+1, termino);
  86. Troca((sequencia+inicio), (sequencia+j));
  87. }
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement