Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2011, 12:13   #1
TrIcKsTeR13r
Новичок
Джуниор
 
Регистрация: 13.12.2011
Сообщений: 1
Восклицание Исправить программу нахождения всех Эйлеровых циклов в графе заданном матрицой смежности

требуется найти все эйлеровы пути и циклы в ориентированном графе и в неориентированном, заданном матрицой смежности, для этого используется алгоритм Флёри:
Шаг 1. Начиная с произвольной вершины п, присвоить произвольному ребру {w, v} номер 1. Затем вычеркнуть ребро {и, v} и перейти в вершину v.

Шаг 2. Пусть w - вершина, в которую перешли в результате выполнения предыдущего шага, и к - номер, присвоенный некоторому ребру на этом шаге. Выбрать любое ребро, инцидентное вершине w, причём мост выбирать только в том случае, когда нет других возможностей; присвоить выбранному ребру номер k+1 и вычеркнуть его.

Шаг 3. Повторять шаг 2 пока не все ребра вычеркнуты.

на выходе получаем порядок вершин эйлерова цикла

вот что я написал ..
Код:
 public class Program
    {
       public static int n=6, x,z, s=10,i,j,k,p;
       public static int[,] mass = new int[n, n];
       public static int[] S = new int[s];
        public static void Main()
       {
            
            Console.WriteLine("Задайте матрицу смежности");
            for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { mass[i, j] = int.Parse(Console.ReadLine()); } }
            Console.WriteLine("Задайте точку отправления");
            i = int.Parse(Console.ReadLine());
            p = 0;
            z = 0; // счётчик проходов по эллементам матрицы
            x = 0; 
            k = -1; // для изменения вершины при учёте мостов
        one:
           for (j=0;j<n;j++){
               if (mass[i, j] > 0) { S[x] = i; x = x + 1; mass[i, j] = 0; mass[j, i] = 0; i = j; goto one; }
               else { if (z > n) { goto two;} else { if (j > 4 & mass[i, j] < 1 & z < n) { z = z + 1; i = k + 1; goto one; } else { p = p + 1; Console.WriteLine(p + "%"); } } } 
        }
        two:
            Console.WriteLine("Ответ:");
            for (j = 0; j < s; j++)
            {
                Console.WriteLine(S[j]);
            }
            Console.WriteLine();
            Console.WriteLine("x1x2x3x4x5x6");
            for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { Console.Write(mass[i, j]+" "); } Console.Write("\n"); }
          
            Console.Read();
    }
    }
}
код, почему-то проходит не все вершины
TrIcKsTeR13r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программу нахождения экстремального элемента или его порядкового номера при заданном одномерном массиве А (Паскаль) S_S_V_N Помощь студентам 1 16.10.2011 21:54
Блок схема:Составьте программу нахождения максимального их чисел, встречающихся в заданном двухмерном мас sa-dmit Паскаль, Turbo Pascal, PascalABC.NET 2 24.06.2010 21:40
Составить программу нахождения всех делителей натурального числа N livestrong Помощь студентам 1 24.12.2008 20:35
Составить программу нахождения всех делителей натурального числа N livestrong Помощь студентам 3 24.12.2008 19:02