Переставляя строки и столбцы матрицы, добиться того, чтобы наибольший элемент оказался в левом верхнем углу - C# (178844)

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

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

Дана вещественная матрица размером (N x M). Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в левом верхнем углу.

Решение задачи: «Переставляя строки и столбцы матрицы, добиться того, чтобы наибольший элемент оказался в левом верхнем углу»

textual
Листинг программы
static class Program
    {
        public static void FindMax(int[,] array,int m, int n, ref int max,ref int intLine, ref int intColumn)
        {
            int tempMax = 0;
            int tempLine = 0, tempColumn = 0;
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j ++)
                {
                    if (array[i, j] > tempMax)
                    {
                        tempMax = array[i, j];
                        tempLine = i;
                        tempColumn = j;
                    }
                }
            max = tempMax; intLine = tempLine; intColumn = tempColumn;
        }
        static void Main(string[] args)
        {
            int m = 2, n = 3;
            int[,] intArray = new int[3, 2] { {6,3},{9,8},{5,10}};
            int max = 0; int Line = 0; int Column = 0;
            FindMax(intArray,3,2,ref max,ref Line,ref Column);
 
            while (Line != 0)
            {
                int[] tempInt = new int[2];
                for (int i = 0; i < 2; i++)
                    tempInt[i] = intArray[Line - 1, i];
                for (int i = 0; i < 2; i++)
                    intArray[Line - 1, i] = intArray[Line,i];
                for (int i = 0; i < 2; i++)
                    intArray[Line, i] = tempInt[i];
                Line--;
            }
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 2; j++)
                    Console.Write(intArray[i, j].ToString() + " ");
                Console.WriteLine();
            }
            if (intArray[0, 0] != max)
            {
                int temp = intArray[0, 0];
                intArray[0, 0] = intArray[0, Column];
                intArray[0, Column] = temp;
            }
            Console.WriteLine();
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 2; j++)
                    Console.Write(intArray[i, j].ToString() + " ");
                Console.WriteLine();
            }
                //Console.WriteLine(max.ToString() + " " + Line.ToString() + " " + Column.ToString() + " ");
                Console.ReadKey();
        }
    }

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


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

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

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