Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке - C# (179598)
Формулировка задачи:
Здравствуйте, нужна помощь.
Условие: Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов не содержащих ни одного отрицательного элемента.
Есть код:
Программа упорядочивает строки не по возрастанию количества одинаковых элементов в каждой строке, а по убыванию. Помогите исправить.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите количество строк:"); // задаем количество строк
int n = int.Parse(Console.ReadLine()); // считываем количество строк
Console.WriteLine("Введите количество столбцов:"); // задаем количество столбцов
int m = int.Parse(Console.ReadLine()); //считваем количество столбцов
Random rnd = new Random(); // генератор случайных чисел
int[,] matrix = new int[n, m]; // пустой двумерный массив размерностью n и m
List<int> t = new List<int>(m);
List<mylist> mlist = new List<mylist>();
int kol = 0; //количество совпадающих элементов
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++) // В циклее создаем нашу матрицу случайными числами от -10 до 50
{
matrix[i, j] = rnd.Next(-1, 4);
Console.Write("{0}\t", matrix[i, j]); // и сразу ее выводим, так мы заполняем только строку
}
Console.WriteLine(); // новая строка матрицы
}
Console.WriteLine("\n==========================\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++) t.Add(matrix[i, j]);
kol = t.Distinct().Count();
mlist.Add(new mylist(kol,t.ToList()));
t.Clear();
}
mlist = mlist.OrderBy(el => el.kol).ToList();
foreach (var item in mlist)
{
foreach (var i in item.list)
{
Console.Write(i + "\t");
}
Console.WriteLine();
}
Console.WriteLine("\n==========================\n");
int count = 0; // Количество элементов в стоблце
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++) if (matrix[j, i] >= 0) count++;
if (count == n)
{
Console.WriteLine("номер первого столбца, где нет отрицательных элементов {0}", ++i);
break;
}
count = 0;
}
Console.ReadKey();
}
}
class mylist
{
public int kol { get; set; }
public List<int> list { get; set;}
public mylist(int kol, List<int> list)
{
this.kol = kol;
this.list = list;
}
}
}Решение задачи: «Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке»
textual
Листинг программы
mlist = mlist.OrderByDescending(el => el.kol).ToList();