示例#1
0
        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));
        }