Browse Source

Должно работать нормально

andreyTree
parent
commit
8b7ce9ccbf
  1. 87
      predprs/Program.cs

87
predprs/Program.cs

@ -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; }
} }
} }
} }

Loading…
Cancel
Save