Работа с неориентированным графом - C#

Узнай цену своей работы

Формулировка задачи:

Есть неориентированный граф 4х4, нужно составить алгоритм, который бы находил пути в которых принимают участие все элементы графа. Граф представлен в виде матрицы смежности. Например есть массив 4Х4 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 То есть каждый элемент графа имеет прямую связь с другим, кроме первого и четвертого. И программа должна вывести пути, в которых принимают участие все элементы графа, следовательно для этого массива программа выведет 1, 2, 3, 4 1, 3, 2, 4 2, 1, 3, 4 3, 1, 2, 4 Программа не должна работать только с этой матрицей смежности.

Решение задачи: «Работа с неориентированным графом»

textual
Листинг программы
  1. private static void Main()
  2. {
  3.     int[,] matrix =
  4.     {
  5.         { 0, 1, 1, 0 },
  6.         { 1, 0, 1, 1 },
  7.         { 1, 1, 0, 1 },
  8.         { 0, 1, 1, 0 }
  9.     };
  10.  
  11.     int[] indexes = Enumerable.Range(0, matrix.GetLength(0)).ToArray();
  12.     do
  13.     {
  14.         var valid = true;
  15.         for (var i = 1; i < indexes.Length; i++)
  16.             if (matrix[indexes[i - 1], indexes[i]] == 0)
  17.             {
  18.                 valid = false;
  19.                 break;
  20.             }
  21.         if (valid)
  22.             Console.WriteLine(string.Join(" ", indexes.Select(x => x + 1)));
  23.     }
  24.     while (Generate(indexes));
  25. }
  26.  
  27. private static bool Generate(IList<int> array)
  28. {
  29.     int j = array.Count - 2;
  30.     while (j != -1 && array[j] >= array[j + 1]) j--;
  31.     if (j == -1) return false;
  32.     int k = array.Count - 1;
  33.     while (array[j] >= array[k]) k--;
  34.     Swap(array, j, k);
  35.     int l = j + 1, r = array.Count - 1;
  36.     while (l < r) Swap(array, l++, r--);
  37.     return true;
  38. }
  39.  
  40. private static void Swap(IList<int> array, int i, int j)
  41. {
  42.     int temp = array[i];
  43.     array[i] = array[j];
  44.     array[j] = temp;
  45. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы