问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication5{classProgram{staticvoidMain(string[]args){TestT=newTest();//T.Init(T.E);T.dis=T.TSP(T.StartCity,T.Q);System.Console.WriteLine(T.dis);//System.Console.WriteLine(T.path);System.Console.Read();}}classTest{publicstringpath="";publicintStartCity=1;publicintdis=0;publicint[,]G;publicList<int>Q;publicTest(){G=newint[4,4]{{0,3,6,7,},{5,0,2,3,},{6,4,0,2,},{3,7,5,0,},};Q=newList<int>();Q.Add(1);Q.Add(2);Q.Add(3);}publicList<int>Delete(List<int>arr,inta){arr.Remove(arr[a]);returnarr;//返回该数组}publicintMin(List<int>Q){inta=Q[0];foreach(intbinQ){if(b<=a){a=b;}}returna;}publicintTSP(intc,List<int>Q){List<int>distemp=newList<int>();//distemp:储存当前点到各点距离List<int>distemp1=newList<int>();foreach(intainQ){distemp.Add(a);distemp1.Add(a);}for(inta=0;a<Q.Count;a++){distemp[a]=TSP1(Q[a],distemp1,a)+G[c,distemp[a]];}returnMin(distemp);}publicintTSP1(intc,List<int>Q,intd){List<int>distemp=newList<int>();//distemp:储存当前点到各点距离List<int>distemp1=newList<int>();foreach(intainQ){distemp.Add(a);distemp1.Add(a);}Delete(distemp,d);Delete(distemp1,d);if(distemp.Count==0){path+=StartCity.ToString();returnG[c,StartCity];}for(inta=0;a<distemp.Count;a++){distemp[a]=TSP1(distemp[a],distemp1,a)+G[c,distemp[a]];System.Console.WriteLine("*");}returnMin(distemp);}}}请问如何能记录最短路径,我写的以上代码只能求出最短路径值,希望能帮忙完善或给个思路
解决方案
解决方案二:
我这两天也在研究这个问题。方便的话能否加个微信一起研究下?我的IDyang_guang_