Поиск повторного элемента в двумерном массиве - 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;
}
}
}