|
|
@ -45,16 +45,16 @@ namespace komvo |
|
|
|
WriteLine(); |
|
|
|
WriteLine(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int[] toSwap = new int[Points.Count]; |
|
|
|
int[] toSwap = new int[Points.Count - 1]; |
|
|
|
for (int i = 0; i < toSwap.Length; i++) toSwap[i] = i + 2; |
|
|
|
for (int i = 0; i <= toSwap.Length - 1; i++) toSwap[i] = i + 2; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < toSwap.Length; i++) WriteLine(toSwap[i]); |
|
|
|
for (int i = 0; i < toSwap.Length; i++) WriteLine(toSwap[i]); |
|
|
|
|
|
|
|
|
|
|
|
int fct = Fact(Points.Count - 1); |
|
|
|
int fct = Fact(Points.Count - 1); |
|
|
|
|
|
|
|
|
|
|
|
int[] routes = new int[Fact(Points.Count)]; |
|
|
|
int[] routes = new int[fct]; |
|
|
|
double[] leng = new double[Fact(Points.Count)]; |
|
|
|
double[] leng = new double[fct]; |
|
|
|
|
|
|
|
|
|
|
|
double optim = leng[0]; |
|
|
|
double optim = leng[0]; |
|
|
|
int oIndex = 0; |
|
|
|
int oIndex = 0; |
|
|
@ -68,6 +68,12 @@ namespace komvo |
|
|
|
routes[index++] = int.Parse(res); |
|
|
|
routes[index++] = int.Parse(res); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < routes.Length; i++) WriteLine(routes[i]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CountLen(ref leng, Matrix, routes); |
|
|
|
CountLen(ref leng, Matrix, routes); |
|
|
|
SearchBest(ref optim, ref oIndex, routes, leng); |
|
|
|
SearchBest(ref optim, ref oIndex, routes, leng); |
|
|
|
Debug(routes); |
|
|
|
Debug(routes); |
|
|
@ -88,17 +94,17 @@ namespace komvo |
|
|
|
char[] ch = rts[i].ToString().ToCharArray(); |
|
|
|
char[] ch = rts[i].ToString().ToCharArray(); |
|
|
|
for (int j = 0; j < ch.Length; j++) |
|
|
|
for (int j = 0; j < ch.Length; j++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int db = int.Parse(ch[j].ToString()) - 2; //debug |
|
|
|
int db = int.Parse(ch[j].ToString()) - 1; //debug |
|
|
|
string db1 = rts[i].ToString(); //debug |
|
|
|
string db1 = rts[i].ToString(); //debug |
|
|
|
if (j == 0) res += mtr[0, int.Parse(ch[j].ToString()) - 2]; |
|
|
|
if (j == 0) res += mtr[0, int.Parse(ch[j].ToString()) - 1]; |
|
|
|
else if (j == ch.Length - 1) |
|
|
|
else if (j == ch.Length - 1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
res += mtr[int.Parse(ch[j - 1].ToString()) - 2, int.Parse(ch[j].ToString()) - 2]; |
|
|
|
res += mtr[int.Parse(ch[j - 1].ToString()) - 1, int.Parse(ch[j].ToString()) - 1]; |
|
|
|
res += mtr[0, int.Parse(ch[j].ToString()) - 2]; |
|
|
|
res += mtr[0, int.Parse(ch[j].ToString()) - 1]; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
res += mtr[int.Parse(ch[j - 1].ToString()) - 2, int.Parse(ch[j].ToString()) - 2]; |
|
|
|
res += mtr[int.Parse(ch[j - 1].ToString()) - 1, int.Parse(ch[j].ToString()) - 1]; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
result[i] = res; |
|
|
|
result[i] = res; |
|
|
|