示例#1
0
        private void Start(object sender, System.Windows.RoutedEventArgs e)
        {
            int[] matr = new int[Consts.SIZE*Consts.SIZE];
            bool ZeroWas = false;
            //Считываем в массив ввеленные пользователем числа
            /*for (int i = 0; i < matr.Length; i++ )
            {
                if (!String.IsNullOrEmpty(((TextBox)Field.Children[i]).Text ))
                {
                    matr[i] = Convert.ToInt32(((TextBox)Field.Children[i]).Text);
                }
                else
                {
                    if (!ZeroWas)
                    {
                        matr[i] = 0;
                        ZeroWas = true;
                    }
                    else
                    {
                        MessageBox.Show("Введите числа");
                        return;
                    }
                }
            }*/

            graph = new Graph(); //Создали граф
            Random r = new Random();
              //  Permutation per = new Permutation(matr);
               Permutation per = new Permutation(new int[] {0,1,2,3,4,5,6,7,8});
            for (int j = 1; j < 50; j++)//проходим по всем вершинам
            {
                int i = r.Next(4);
                Permutation per1 = null;
                switch (i)
                {
                    case 0:
                        per1 = per.Left();
                        break;
                    case 1:
                        per1 = per.Right();
                        break;
                    case 2:
                        per1 = per.Up();
                        break;
                    case 3:
                        per1 = per.Down();
                        break;
                }

                if (per1 != null)
                {
                    per = per1;
                }
            }

                path = graph.Dijkstra(graph.GetNumberOfPermutation(per)); //Нашли путь

                if (path == null)
                {
                    MessageBox.Show("Это конечная");
                }
                else
                {
                currentMtx = path.Count - 1; //Текущая матрица
                Print(per.AllNumbers()); //Отрисовка

                //Timer
                timer = new Timer();
                timer.Interval = 1000;
                timer.Elapsed += TimeIs;
                timer.Start();
                //endTimer
            }
        }