Najczęściej występująca liczba w macierzy

0

Witam. Mam problem z zadaniem domowym z informatyki. Zadanie polega na tym, że tworzymy macierz 10x10, która jest wypełniania losowo liczbami od 1 do 3. Następnie trzeba znaleźć liczbę, która powtarza się najczęściej oraz wiersz i kolumnę, w której występuje ona najczęściej. Z generowaniem macierzy nie ma problemu, tylko nie mam w ogóle pomysłu jak z drugą częścią zadania. Proszę o pomoc ;)

namespace Kwadracik
{
    class Program
    {
        Random rnd = new Random();

        void Run()
        {
            const int n = 10;
            const int m = 3;
            var a = new int[n, n];

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    a[i, j] = 1 + rnd.Next(m);
                }
           }
        }
        static void Main(string[] args)
        {
            new Program().Run();
            Console.ReadKey();
        }
    }
} 
0

W takiej samej pętli przelecieć przez macierz "a" i zapisać ilość wystąpień każdej z wartości, potem wybrać największą i zwrócić jako wynik.

Albo użyć LINQ, zgrupować wartości, zrobić Count(), a potem projekcje na wartość z maksymalną.

0

Nie rozumiem problemu. 3 Proste kroki.

  1. Iterujesz po macierzy i zapisujesz do jakiegos slownika (np. para klucz-wartosc int(liczba)-int(iloscwystapien)) ilosc wystapien dla poszczegolnych liczb. Twoja liczba to klucz ze slownika, w ktorym iloscwystapien jest max.
  2. Iterujesz po kolumnach macierzy, przechowujac w slowniku (para klucz-wartosc int(numer_kolumny)-int(ilosc wystapien). Twoj numer kolumny to klucz ze slownika, w ktorym iloscwystapien jest max.
  3. Iterujesz po wierszach macierzy, przechowujac w slowniku (para klucz-wartosc int(numer_wiersza)-int(iloscwystapien). Twoj numer wiersza to klucz ze slownika, w ktorym iloscwystapien jest max.
1

W dzisiejszym odcinku cyklu "jednolinijkowe rozwiązania wielolinijkowych problemów w Linq" przedstawiamy następującą treść:

	var mostFrequent = myTable.SelectMany(m => m).GroupBy(m => m).OrderByDescending(m => m.Count()).First().Key;
// lub
	var mostFrequent2 = (from t in myTable.SelectMany(m => m) group t by t into gt orderby gt.Count() descending select gt.Key).First();

1 użytkowników online, w tym zalogowanych: 0, gości: 1