|
|
@ -48,76 +48,85 @@ namespace predprs |
|
|
|
Variations<int> variations = new Variations<int>(data2, 5); |
|
|
|
Variations<int> variations = new Variations<int>(data2, 5); |
|
|
|
|
|
|
|
|
|
|
|
//Permutations<int> variations = new Permutations<int>(data, GenerateOption.WithRepetition); |
|
|
|
//Permutations<int> variations = new Permutations<int>(data, GenerateOption.WithRepetition); |
|
|
|
double result = 0, best = 0; |
|
|
|
string bestStr = string.Empty; |
|
|
|
// string bestStr = string.Empty; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stopwatch sw = new Stopwatch(); |
|
|
|
Stopwatch sw = new Stopwatch(); |
|
|
|
sw.Start(); |
|
|
|
sw.Start(); |
|
|
|
|
|
|
|
|
|
|
|
List<string> resus = new List<string>(); |
|
|
|
//List<string> resus = new List<string>(); |
|
|
|
|
|
|
|
|
|
|
|
List<Results> bestResult = new List<Results>(); |
|
|
|
List<Routes> bestResult = new List<Routes>(); |
|
|
|
Results str = new Results(); |
|
|
|
bestResult.Add(new Routes { Inc = 0, Route = "" }); |
|
|
|
str.res = 0; |
|
|
|
//Results str = new Results(); |
|
|
|
str.bestSt = string.Empty; |
|
|
|
//str.Res = 0; |
|
|
|
|
|
|
|
//str.BestSt = string.Empty; |
|
|
|
|
|
|
|
|
|
|
|
foreach (IList<int> v in variations) |
|
|
|
foreach (IList<int> v in variations) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (v[0] + v[1] + v[2] + v[3] + v[4] == 10) |
|
|
|
if (v[0] + v[1] + v[2] + v[3] + v[4] == 10) |
|
|
|
{ |
|
|
|
{ |
|
|
|
result = matrix[v[0], 0] + matrix[v[1], 1] + matrix[v[2], 2] + matrix[v[3], 3] + matrix[v[4], 4]; |
|
|
|
double result = matrix[v[0], 0] + matrix[v[1], 1] + matrix[v[2], 2] + matrix[v[3], 3] + matrix[v[4], 4]; |
|
|
|
if (result > str.res) |
|
|
|
//result.CompareTo(bestResult[0].Inc); |
|
|
|
|
|
|
|
if (result > bestResult[0].Inc) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// на всякий случай поля объекта делую нулевыми |
|
|
|
// на всякий случай поля объекта делую нулевыми |
|
|
|
str.res = 0; |
|
|
|
//str.Res = 0; |
|
|
|
str.bestSt = string.Empty; |
|
|
|
//str.BestSt = string.Empty; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bestResult.Clear(); // отчистка листа при нахождении большего результата |
|
|
|
bestResult.Clear(); // отчистка листа при нахождении большего результата |
|
|
|
|
|
|
|
|
|
|
|
//запись в поля объекта данных |
|
|
|
//запись в поля объекта данных |
|
|
|
str.res = result; |
|
|
|
//str.Res = result; |
|
|
|
str.bestSt = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
bestStr = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
bestResult.Add(str); //добавление объекта в лист |
|
|
|
bestResult.Add(new Routes { Inc = result, Route = bestStr }); //добавление объекта в лист |
|
|
|
|
|
|
|
|
|
|
|
//best = result; |
|
|
|
//best = result; |
|
|
|
//bestStr = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
//bestStr = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
// если результаты совпали но строки отличаются (что-то тут странное происходит) |
|
|
|
// если результаты совпали но строки отличаются (что-то тут странное происходит) |
|
|
|
else if (result == str.res && str.bestSt != string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4])) |
|
|
|
else if (result == bestResult[0].Inc)// && str.BestSt != string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4])) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// на всякий случай поля объекта делую нулевыми |
|
|
|
// на всякий случай поля объекта делую нулевыми |
|
|
|
str.res = 0; |
|
|
|
//str.Res = 0; |
|
|
|
str.bestSt = string.Empty; |
|
|
|
//str.BestSt = string.Empty; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool check = true; |
|
|
|
|
|
|
|
string temp = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
|
|
|
|
foreach (var vr in bestResult) if (temp == vr.Route) check = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (check) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
bestResult.Add(new Routes { Inc = result, Route = temp }); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//запись в поля объекта данных |
|
|
|
//запись в поля объекта данных |
|
|
|
str.res = result; |
|
|
|
//str.Res = result; |
|
|
|
str.bestSt = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
//str.BestSt = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
bestResult.Add(str);//добавление объекта в лист |
|
|
|
//bestResult.Add(str);//добавление объекта в лист |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool tr = false; |
|
|
|
//if (result == 5.4 && tr) |
|
|
|
string r = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); |
|
|
|
//{ |
|
|
|
foreach (var vr in resus) if (r != vr) tr = true; |
|
|
|
// resus.Add(r); |
|
|
|
if (result == 5.4 && tr) |
|
|
|
// tr = false; |
|
|
|
{ |
|
|
|
//} |
|
|
|
resus.Add(r); |
|
|
|
|
|
|
|
tr = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//WriteLine("[{0} {1} {2} {3} {4}] {5}", v[0], v[1], v[2], v[3], v[4], result); |
|
|
|
//WriteLine("[{0} {1} {2} {3} {4}] {5}", v[0], v[1], v[2], v[3], v[4], result); |
|
|
|
//Thread.Sleep(100); |
|
|
|
//Thread.Sleep(100); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
foreach (string s in resus) WriteLine(s); |
|
|
|
//foreach (string s in resus) WriteLine(s); |
|
|
|
sw.Stop(); |
|
|
|
sw.Stop(); |
|
|
|
// вывод листа |
|
|
|
// вывод листа |
|
|
|
WriteLine(bestResult.Count); |
|
|
|
WriteLine(bestResult.Count); |
|
|
|
foreach (Results strr in bestResult) |
|
|
|
foreach (var route in bestResult) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
WriteLine("Наибольшая прибыль при {0} со значением {1}", strr.bestSt, strr.res); |
|
|
|
WriteLine("Наибольшая прибыль при {0} со значением {1}", route.Inc, route.Route); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -125,10 +134,10 @@ namespace predprs |
|
|
|
ReadKey(); |
|
|
|
ReadKey(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class Results |
|
|
|
class Routes |
|
|
|
{ |
|
|
|
{ |
|
|
|
public double res { get; set; } |
|
|
|
public double Inc { get; set; } |
|
|
|
public string bestSt { get; set; } |
|
|
|
public string Route { get; set; } |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|