Найти индексы всех седловых точек матрицы - C#

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

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

Составить программу для ввода матрицы nхm. Вывести номера i, j всех седловых точек матрицы. Седловым называется элемент матрицы, наибольший в своем столбце и одновременно наименьший в строке, и наоборот. помогите пожалуйста

Решение задачи: «Найти индексы всех седловых точек матрицы»

textual
Листинг программы
  1.  struct Point
  2.     {
  3.         public int x;
  4.         public int y;
  5.  
  6.         public Point(int x, int y)
  7.         {
  8.             this.x = x;
  9.             this.y = y;
  10.         }
  11.  
  12.         public override string ToString()
  13.         {
  14.             return string.Format("i = {0}, j = {1}", x, y);
  15.         }
  16.     }
  17.     class Program
  18.     {
  19.  
  20.         static void Main(string[] args)
  21.         {
  22.             int n = 5;
  23.             int m = 5;
  24.             int[,] matrix = GetRandomizeMatrix(n, m);
  25.             ShowMatrix(matrix, n, m);
  26.             List<Point> saddlePoints = GetSaddlePoints(matrix, n, m);
  27.             Console.WriteLine();
  28.             foreach(Point point in saddlePoints)
  29.             {
  30.                 Console.WriteLine(point);
  31.             }
  32.             Console.ReadLine();
  33.            
  34.         }
  35.  
  36.         public static void ShowMatrix(int[,] matrix, int rows, int columns)
  37.         {
  38.             Console.WriteLine("\t\t*****Matrix******");
  39.             for(int i = 0; i < rows; i++)
  40.             {
  41.                 for(int j = 0; j < columns; j++)
  42.                     Console.Write(matrix[i, j] + "\t");
  43.                 Console.WriteLine();
  44.             }
  45.  
  46.         }
  47.         public static int[,] GetRandomizeMatrix(int n, int m)
  48.         {
  49.             int[,] matrix = new int[n, m];
  50.             Random random = new Random();
  51.             for (int i = 0; i < n; i++)
  52.             {
  53.                 for(int j = 0; j < m; j++)
  54.                 {
  55.                     matrix[i, j] = random.Next(0, 99);
  56.                 }
  57.             }
  58.             return matrix;
  59.         }
  60.         public static List<Point> GetSaddlePoints(int[,] matrix, int rows, int columns)
  61.         {
  62.             List<Point> saddlePoints = new List<Point>();
  63.  
  64.             int minValue = matrix[0,0],
  65.                 maxValue = matrix[0,0];
  66.  
  67.             Point minIndex = new Point(),
  68.                 maxIndex = new Point();
  69.  
  70.             List<Point> rowsPoints = new List<Point>();
  71.             List<Point> columnsPoints = new List<Point>();
  72.  
  73.             int count = -1;
  74.             for (int j = 0; j < columns; j++)
  75.             {
  76.                 minValue = matrix[++count, j];
  77.                 maxValue = matrix[count, j];
  78.  
  79.                 minIndex = new Point(count, j);
  80.                 maxIndex = new Point(count, j);
  81.                 for (int i = 0; i < rows; i++)
  82.                 {
  83.                    
  84.                     if (minValue > matrix[i, j])
  85.                     {
  86.                         minValue = matrix[i, j];
  87.                         minIndex = new Point(i, j);
  88.                     }
  89.                     if (maxValue < matrix[i, j])
  90.                     {
  91.                         maxValue = matrix[i, j];
  92.                         maxIndex = new Point(i, j);
  93.                     }
  94.                 }
  95.                 rowsPoints.Add(minIndex);
  96.                 rowsPoints.Add(maxIndex);
  97.  
  98.                
  99.             }
  100.             count = -1;
  101.             for (int i = 0; i < rows; i++)
  102.             {
  103.                 minValue = matrix[i, ++count];
  104.                 maxValue = matrix[i, count];
  105.  
  106.                 minIndex = new Point(i, count);
  107.                 maxIndex = new Point(i, count);
  108.                 for (int j = 0; j < columns; j++)
  109.                 {
  110.                     if (minValue > matrix[i, j])
  111.                     {
  112.                         minValue = matrix[i, j];
  113.                         minIndex = new Point(i, j);
  114.                     }
  115.                     if (maxValue < matrix[i, j])
  116.                     {
  117.                         maxValue = matrix[i, j];
  118.                         maxIndex = new Point(i, j);
  119.                     }
  120.                 }
  121.                 columnsPoints.Add(maxIndex);
  122.                 columnsPoints.Add(minIndex);
  123.             }
  124.  
  125.             for(int i = 0; i < columnsPoints.Count; i++)
  126.                 if(rowsPoints[i].Equals(columnsPoints[i]))
  127.                     saddlePoints.Add(rowsPoints[i]);
  128.  
  129.             return saddlePoints;
  130.         }
  131.  
  132.     }

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


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

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

9   голосов , оценка 4.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы