可以告诉你思路,就是枚举法,这样最容易写代码
初始化一个12*12的二维矩阵A,记录任意两个点之间是否有路,
再用一个12*12的矩阵B记录路是否被铺过,
还要用一个12*12的矩阵C记录路走过几次,
从1开始搜索,查A,看有哪些路,递归,并复制B为Bi,更新Bi,只到所有路铺完,返回,
计算所有成功的铺路方案,求出最优
当然,如果只是这样,一定会陷入死循环,
因此要加多一个条件,当所走路程达到一定时也要返回
这种算法,可能会陷入长时间运算(可以加运算时间限制解决)或内存溢出
更好的算法也有,但不是三言两语就可以说清楚的,想知道请私聊
通过优化可以得到路径总长度最小值为 5990 米。此时街道(3,4),(4,8),(5,1),
(6,9),(10,6),和(11,7)经过了两次,其他街道都只经历了一次
图 15.9中是得到的欧拉图 '
G ;在其中用加重线绘出了两次经过的弧。此图中的
一条欧拉回路为:1→2→6→5→6→7→8→12→11→7→11→10→7→3→4→3→4
→8→4→8→11→7→6→9→5→6→9→10→6→10→6→2→3→2→5→1→5→1(存
在多条等价路径) 。