Определить количество областей, заполненных числами «1» и размер наибольшей области в матрице - C#
Формулировка задачи:
Дано клеточное поле размера 10x10, заполненное числами «0» и «1». Определить количество областей, заполненных числами «1» и размер наибольшей области. Единицы входят в одну область, если являются соседями по вертикали или горизонтали. Если областей из «1» нет, то вывести соответствующее сообщение. Форма ввода: с клавиатуры вводится матрица размера 10x10, заполненная числами «0» и «1».
Форма вывода: количество областей, размер наибольшей области
Решение задачи: «Определить количество областей, заполненных числами «1» и размер наибольшей области в матрице»
textual
Листинг программы
using System; static class Program { static bool[,] map; static void Main() { int size = 5, maxAreaLength = 0, count = 0; int[,] arr = RandomBinaryArray(size); map = new bool[size, size]; PrintArray(arr); for (int i = 0; i < arr.GetLength(0); i++) for (int j = 0; j < arr.GetLength(1); j++) if (!map[i, j] && arr[i,j] != 0) { int tmp = ExploreArea(arr, i, j); if (tmp > 0) count++; if (maxAreaLength < tmp) maxAreaLength = tmp; } Console.WriteLine("Count: {0}, Max: {1}", count, maxAreaLength); } public static int ExploreArea(int[,] array, int row, int col) { if (array[row, col] == 0 || map[row, col]) return 0; else { map[row, col] = true; int left, right, top, bottom; left = right = top = bottom = 0; if (row > 0) top = ExploreArea(array, row - 1, col); if (col > 0) left = ExploreArea(array, row, col - 1); if (row + 1 < array.GetLength(0)) bottom = ExploreArea(array, row + 1, col); if (col + 1 < array.GetLength(1)) right = ExploreArea(array, row, col + 1); return 1 + left + right + top + bottom; } } public static int[,] RandomBinaryArray(int size) { int[,] array = new int[size, size]; Random r = new Random(); for (int i = 0; i < size; i++) for (int j = 0; j < size; j++) array[i, j] = r.Next(2); return array; } public static void PrintArray(int[,] array) { for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) Console.Write(array[i, j] + " "); Console.WriteLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д