# Max element in matrix

• 12-06-2013
shirayukilee
Max element in matrix
Hello

I am beginner in programming and I need a little help. In given matrix, I have to find elements that are maximal for its row and column.

For example in matrix

5 7 3 4 8
4 5 9 4 6
3 10 6 7 5
6 4 8 1 9

program should check first row (5 7 3 4 8) and second column (7 5 10 4) and return 10. After that it should continue search and for e.g second row (4 5 9 4 6) and third column (3 9 6 1) return 9. And so on...

I know how to find max for whole matrix, but I need to find (multiple) max(es) for every row and column together.

Here is my code:
Code:

``` for (int i = 0; i < n; i++)  {     for (int j = 0; j < m; j++)     {         if (a[i, j] > max)         {             max = a[i, j];         }     }  } listBox1.Items.Add(max); ```
I think I am close to solution, but I am not quite sure how to do this exactly

If there's any question, I'll try to answer

• 12-08-2013
tabstop
So why not just do two for loops (without resetting max in between them)?
• 12-09-2013
itsme86
Assuming it's already late, and this is more extravagant than your teacher would expect, this would work:

Code:

```    class Program     {         private static void Main(string[] args)         {             int[,] matrix = new int[4, 5]                 {                     { 5, 7, 3, 4, 8 },                     { 4, 5, 9, 4, 6 },                     { 3, 10, 6, 7, 5 },                     { 6, 4, 8, 1, 9 }                 };             int[,] maxes = new int[4, 5];             for (int row = 0; row <= matrix.GetUpperBound(0); ++row)             {                 for (int column = 0; column <= matrix.GetUpperBound(1); ++column)                 {                     maxes[row, column] = matrix.GetMaxValue(row, column);                 }             }             for (int row = 0; row <= matrix.GetUpperBound(0); ++row)             {                 for (int column = 0; column <= matrix.GetUpperBound(1); ++column)                     Console.Write("{0,2} ", maxes[row, column]);                 Console.WriteLine();             }         }     }     public static class Extensions     {         public static int GetMaxValue(this int[,] matrix, int row, int column)         {             int max = int.MinValue;             for (int c = 0; c <= matrix.GetUpperBound(1); ++c)                 if (max < matrix[row, c])                     max = matrix[row, c];             for (int r = 0; r <= matrix.GetUpperBound(0); ++r)                 if (max < matrix[r, column])                     max = matrix[r, column];             return max;         }     }```
Output:
Code:

``` 8 10  9  8  9  9 10  9  9  9 10 10 10 10 10  9 10  9  9  9```
• 12-11-2013
VirtualAce
Ok well one could have said:
For min, set start value to max. If any value is less than start value, set start value to this value and continue.
For max, set start value to min. If any value is greater than start value, set start value to this value and continue.
• 12-18-2013
shirayukilee
Thank you everyone :) I finished this :D