Browse Source

Release v1.5

master
parent
commit
b6b6f28da0
  1. 43
      predprs/Program.cs

43
predprs/Program.cs

@ -1,6 +1,6 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics;
using Combinatorics.Collections;
using System.Collections.Generic;
using static System.Console;
namespace predprs
@ -37,46 +37,31 @@ namespace predprs
Stopwatch sw = new Stopwatch();
sw.Start();
List<Routes> bestResult = new List<Routes>();
bestResult.Add(new Routes { Inc = 0, Route = "" });
HashSet<string> bestResult = new HashSet<string>();
double best = 0;
foreach (IList<int> v in variations)
{
if (v[0] + v[1] + v[2] + v[3] + v[4] == 10) //проверка, если количество мешков 10
if (v[0] + v[1] + v[2] + v[3] + v[4] == 10) //проверка, если количество мешков 10
{
double result = matrix[v[0], 0] + matrix[v[1], 1] + matrix[v[2], 2] + matrix[v[3], 3] + matrix[v[4], 4];
if (result > bestResult[0].Inc) //если найдено значение с бОльшей прибылью
if (result > best) //если найдено значение с бОльшей прибылью
{
bestResult.Clear(); // отчистка листа при нахождении большего результата
string bestStr = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]);
bestResult.Add(new Routes { Inc = result, Route = bestStr }); //добавление объекта в лист
}
else if (result == bestResult[0].Inc)// если количество прибыли одинаково
{
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 });
best = result;
bestResult.Clear(); //отчистка листа при нахождении большего результата
bestResult.Add(string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4])); //добавление объекта в хешсет
}
else if (result == best)
bestResult.Add(string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4])); //если количество прибыли одинаково
}
}
string answer = string.Empty;
foreach (var route in bestResult)
answer += route.Route + "\n";
answer += route + "\n";
sw.Stop();
WriteLine("Наибольшая прибыль при: \n{0}Cо значением {1}\n{2} ms", answer, bestResult[0].Inc, sw.ElapsedMilliseconds);
WriteLine("Наибольшая прибыль при: \n{0}Cо значением {1}\n{2} ms", answer, best, sw.ElapsedMilliseconds);
ReadKey();
}
class Routes
{
public double Inc { get; set; }
public string Route { get; set; }
}
}
}
}
Loading…
Cancel
Save