Дана целочисленная прямоугольная матрица - C# (185446)

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

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

Дана целочисленная прямоугольная матрица. Определить количество столбцов не содержащих ни одного нулевого элемента. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.

Решение задачи: «Дана целочисленная прямоугольная матрица»

textual
Листинг программы
class Program
    {
        static void Main(string[] args)
        {
            var m = new int[,] {
                { 4,5,-6,4 },
                { -7,0,9,2 },
                { 1,2,3,2 }
            };
 
            // Определить количество столбцов не содержащих ни одного нулевого элемента
            var nonZeroColumnsCount = Enumerable.Range(0, m.GetLength(1))
                .Count(c => Enumerable.Range(0, m.GetLength(0)).All(r => m[r, c] != 0));
 
            // Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.
            var sorted = Enumerable.Range(0, m.GetLength(0))
                .Select(r => Enumerable.Range(0, m.GetLength(1)).Select(c => m[r, c]).ToArray())
                .OrderBy(r => r.Where(n => n > 0 && n % 2 == 0).Sum()).SelectMany(a=>a).ToArray();
 
            var result = (int[,]) m.Clone();
            Buffer.BlockCopy(sorted, 0, result, 0, sorted.Length * sizeof(int));
        }
    }

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

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