Поиск повторного элемента в двумерном массиве - C#

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

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

Здравствуйте! У меня появился новый вопрос о двумерном массиве - задача состоит в поиске. Задача: Нужно найти такие элементы в матрице которые не повторяются и вписать их в одномерный массив. хотелось бы получить алгоритмический подход к решению задачи - примитивный поиск, и установка найденных данных в одномерный массив. Откровенно говоря я уже замучился )) - пока еще не удалось самостоятельно решить. мой алгоритм таков: m[0, 0] - пройдись по всем ячейкам матрицы от m[0, 1] до m[n, n] если не нашел то - arr[0] = m[0, 0] m[0, 1] - пройдись по всем ячейкам матрицы от m[0, 2] до m[n, n] если не нашел то - arr[1] = m[0, 1] m[0, 2] - пройдись по всем ячейкам матрицы от m[1, 0] до m[n, n] если не нашел то - arr[2] = m[0, 2] m[1, 0] - пройдись по всем ячейкам матрицы от m[1, 1] до m[n, n] если не нашел то - arr[3] = m[1, 0] ......... и так до m[n, n - 1] у меня не получается реализовать такой код, может кто-то сможет помоч? приложил картинки - для визуализации... заранее благодарю .

Решение задачи: «Поиск повторного элемента в двумерном массиве»

textual
Листинг программы
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication198
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[,] matrix = new int[,]
                                {
                                    { 7, 5, 1 }, 
                                    { 2, 3, 7 }, 
                                    { 4, 2, 3 }
                                };
 
            //создаем результирующий массив
            List<int> res = new List<int>();
 
            //перебираем все элементы матрицы
            for(int i=0;i< matrix.GetLength(0);i++)
            for(int j=0;j< matrix.GetLength(1);j++)
            {
                //получаем элемент
                int v = matrix[i, j];
                //считаем сколько таких элементов
                int count = CalcCount(matrix, v);
                if (count == 1)//если он ровно один
                    res.Add(v);//добавляем в результирующий список
            }
 
            //выводим результат
            Console.WriteLine(string.Join(", ", res));
            Console.ReadLine();
        }
 
        //подсчет числа элемнтов, равных данному
        static int CalcCount(int[,] matrix, int v)
        {
            int count = 0;
 
            //перебираем все элементы матрицы
            for(int i=0;i<matrix.GetLength(0);i++)
            for(int j=0;j<matrix.GetLength(1);j++)
            if(matrix[i, j] == v)//если элемент равен искомому
                count++;//увеличиваем счетчик
 
            return count;
        }
    }
}

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


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

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

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