Переставляя строки и столбцы матрицы, добиться того, чтобы наибольший элемент оказался в левом верхнем углу - 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();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д