private void btnRun_Click(object sender, EventArgs e) { if ((tbElems.Text == "") || (tbSum.Text == "")) { MessageBox.Show("Введите исходные данные."); } else { int[] elems = null; try { elems = tbElems.Text.Split(' ').Where(x => !string.IsNullOrWhiteSpace(x)).Select(x => int.Parse(x)).ToArray(); //elems = elems.Distinct().ToArray(); } catch (Exception) { MessageBox.Show("Ошибка при вводе чисел."); } //время выполнения и "погрешность" long timeExact = 0; int deltaExact = 0; long timeGreed = 0; int deltaGreed = 0; string exactAlgRes = ExactAlgorithm.Result(elems, int.Parse(tbSum.Text), out timeExact, out deltaExact); string greedAlgRes = GreedAlgorithm.Result(elems, int.Parse(tbSum.Text), out timeGreed, out deltaGreed); ShowRes(timeExact, timeGreed, deltaExact, deltaGreed, exactAlgRes, greedAlgRes); } }
public static string Result(int[] set, int sum, out long time, out int realDiff) { time = 0; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); Array.Sort(set); Array.Reverse(set); realDiff = greedy(set, set.Length, sum); stopWatch.Stop(); time = stopWatch.Elapsed.Ticks; return(ExactAlgorithm.ToString(answer)); }