Browse Source

Release v1.5

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

37
predprs/Program.cs

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

Loading…
Cancel
Save