Проверить существует ли связь через единицы от верхней строки массива до нижней - 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();
        }
    }
}

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы