最短路径算法 亦凉 2022-07-11 14:09 214阅读 0赞 最短路径[算法][Link 1] \#include <iostream> void path()\{ //val\[i\]\[j\]从i点到j点的距离,如果不可到达到,设置成0 int val\[8\]\[8\]; //res\[i\]\[j\]从i点到j点的最短距离,我们只要得到res\[0\]\[7\] int res\[8\]\[8\]; //fa\[i\]i点的前一个最短距离点 int fa\[8\]; for (int i = 0; i<8; i++) \{ for (int j = 0; j<8; j++)\{ val\[i\]\[j\] = 0; res\[i\]\[j\] = 10000; \} fa\[i\] = -1; \} res\[0\]\[0\] = 0; val\[0\]\[1\] = 13; val\[0\]\[2\] = 15; val\[0\]\[3\] = 16; val\[1\]\[4\] = 18; val\[1\]\[5\] = 17; val\[1\]\[6\] = 16; val\[2\]\[4\] = 18; val\[2\]\[5\] = 20; val\[2\]\[6\] = 30; val\[3\]\[4\] = 11; val\[3\]\[5\] = 9; val\[3\]\[6\] = 13; val\[4\]\[7\] = 16; val\[5\]\[7\] = 14; val\[6\]\[7\] = 17; for (int i = 1; i<8; i++) \{ for (int j = 0; j<i; j++)\{ if (val\[j\]\[i\] != 0) \{ if (res\[0\]\[j\] +val\[j\]\[i\]<res\[0\]\[i\]) \{ res\[0\]\[i\] = res\[0\]\[j\] +val\[j\]\[i\]; fa\[i\] = j; \} \} \} \} int point = 7; std::cout << 7 << ""; while (fa\[point\] != -1) \{ std::cout << "<---" << fa\[point\]; point = fa\[point\]; \} std::cout << std::endl; std::cout << res\[0\]\[7\] <<std::endl; \} int main(int argc, const char \* argv\[\]) \{ // insert code here... std::cout << "Hello,World!\\n"; path(); system("pause"); return 0; \} 运行结果: ![Center][] [Link 1]: http://lib.csdn.net/base/datastructure [Center]: /images/20220711/a5c48249b568485dad0355637d004d2e.png
还没有评论,来说两句吧...