Проверить существует ли связь через единицы от верхней строки массива до нижней - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д