Проверить существует ли связь через единицы от верхней строки массива до нижней - C#
Формулировка задачи:
заполнить массив 5х5 единицами и нулями в случайном порядке и проверить существует ли связь через единицы от верхней строки массива до нижней. Помогите пожалуйста срочно
Решение задачи: «Проверить существует ли связь через единицы от верхней строки массива до нижней»
textual
Листинг программы
class Program { static int[, ,] arr = new int[5, 5, 2]; static bool Find; static void Main() { Random rand = new Random(); do { Find = false; for (int i = 0; i < 5; i++) for (int j = 0; j < 5; j++) arr[i, j, 0] = rand.Next(0, 2); for (int i = 0; i < 5 && !Find; i++) { for (int y = 0; y < 5; y++) for (int x = 0; x < 5; x++) arr[x, y, 1] = 0; if (i == 0) Print(); if (arr[i, 0, 0] == 1) Go(i, 0); } if (Find) Print(); Console.WriteLine("Ещё?(Enter)"); } while (Console.ReadKey().Key == ConsoleKey.Enter); } static void Go(int x, int y) { int[] dx = { 0, -1, 1, 0 }; int[] dy = { -1, 0, 0, 1 }; arr[x, y, 1] = 1; if (y == 4) Find = true; for (int i = 0; i < 4 && !Find; i++) if (x + dx[i] > -1 && x + dx[i] < 5 && y + dy[i] > -1 && y + dy[i] < 5 && arr[x + dx[i], y + dy[i], 0] == 1 && arr[x + dx[i], y + dy[i], 1] == 0) Go(x + dx[i], y + dy[i]); if (!Find) arr[x, y, 1] = 0; } static void Print() { Console.WriteLine(); for (int y = 0; y < 5; y++) { for (int x = 0; x < 5; x++) { if (arr[x, y, 1] == 0) Console.ForegroundColor = ConsoleColor.White; else Console.ForegroundColor = ConsoleColor.Red; Console.Write(arr[x, y, 0] + " "); } Console.WriteLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д