Advertisement
wendy890711

191227

Dec 27th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. #include <iomanip>
  5. #define size 7
  6. #define dis 9999999
  7. int GraphMatrix[size][size];
  8. int distan[size];
  9. bool visit[7] = { 0 };
  10.  
  11. void BuildMatrix(int*PathCost)
  12. {
  13. int StartPoint;
  14. int EndPoint;
  15. int i, j;
  16. for (i = 0; i < size; i++)
  17. {
  18. for (j = 0; j < size; j++)
  19. {
  20. if (i == j)
  21. GraphMatrix[i][j] = 0;
  22. else
  23. GraphMatrix[i][j] = dis;
  24. }
  25. }
  26.  
  27. i = 0;
  28. for (int i = 0; i < 12;i++)
  29. {
  30. StartPoint = PathCost[i * 3]-1;
  31. EndPoint = PathCost[i * 3 + 1]-1;
  32. GraphMatrix[StartPoint][EndPoint] = PathCost[i * 3 + 2];
  33. GraphMatrix[EndPoint][StartPoint] = PathCost[i * 3 + 2];
  34. }
  35. }
  36.  
  37. void PrintGraph()
  38. {
  39. int i, j;
  40. for (i = 0; i < size; i++)
  41. {
  42. cout << "vex" << i+1;
  43. for (j = 0; j < size; j++)
  44. {
  45. {
  46. if (GraphMatrix[i][j] == dis)
  47. cout <<setw(5)<< 'x';
  48. else
  49. {
  50. GraphMatrix[j][i] = GraphMatrix[i][j];
  51. cout << setw(5) << GraphMatrix[i][j];
  52. }
  53. }
  54. }
  55. cout << endl;
  56. }
  57. }
  58.  
  59. int find()
  60. {
  61. int min = 9999999;
  62. for (int i = 0; i < size; i++)
  63. {
  64. if (distan[i] < min && visit[i]==0)
  65. min = distan[i];
  66. }
  67.  
  68. return min;
  69. }
  70.  
  71. int main(void)
  72. {
  73. int PathCost[12][3] = {
  74. { 1, 2, 4 },
  75. { 1, 3, 6 },
  76. { 1, 4, 6 },
  77. { 2, 3, 1 },
  78. { 2, 5, 7 },
  79. { 3, 4, 2 },
  80. { 3, 5, 6 },
  81. { 3, 6, 4 },
  82. { 4, 6, 5 },
  83. { 5, 6, 1 },
  84. { 5, 7, 6 },
  85. { 6, 7, 8 },
  86. };
  87. BuildMatrix(&PathCost[0][0]);
  88.  
  89. for (int i = 0; i < size; i++)
  90. distan[i] = GraphMatrix[0][i];
  91.  
  92. cout << "輸出distance:" << endl;
  93. for (int i = 0; i < size; i++)
  94. {
  95. cout << distan[i] << " ";
  96. }
  97. cout << endl;
  98. visit[0] = true;
  99.  
  100. cout << "輸出[1][i]:" << endl;
  101. for (int i = 0; i < size; i++)
  102. {
  103. if (visit[i] == 1)
  104. GraphMatrix[1][i] = dis;
  105. cout << GraphMatrix[1][i] << " ";
  106. }
  107. cout << endl;
  108.  
  109. cout << "找最小值" << find()<<endl;
  110. for (int j = 0; j < size; j++)
  111. {
  112. GraphMatrix[1][j] += find();
  113. }
  114.  
  115. for (int i = 0; i < size; i++)
  116. {
  117.  
  118. if (GraphMatrix[1][i] < distan[i])
  119. distan[i] = GraphMatrix[1][i];
  120. }
  121.  
  122. for (int i = 0; i < size; i++)
  123. cout << distan[i] << " ";
  124. cout << endl;
  125.  
  126. for (int i = 1; i < size; i++)
  127. {
  128. visit[i] = true;
  129. for (int j = 0; j < size; j++)
  130. {
  131. cout << "找distance最小值:" << find() << endl;
  132. GraphMatrix[i+1][j] += find();
  133. if (GraphMatrix[i + 1][j] < distan[j])
  134. distan[j] = GraphMatrix[i + 1][j];
  135. }
  136.  
  137. cout << "輸出distance:" << endl;
  138. for (int i = 0; i < size; i++)
  139. cout << distan[i] << " ";
  140. cout << endl;
  141. }
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement