Найдите наименьший и наибольший элемент из диагоналей квадратной матрицы
Опубликовано: 5 Января, 2022
Для квадратной матрицы порядка n * n найдите наименьший и наибольший элементы обеих диагоналей данной матрицы.
Примеры:
Ввод: matrix = { {1, 2, 3, 4, -10}, {5, 6, 7, 8, 6}, {1, 2, 11, 3, 4}, {5, 6, 70, 5, 8}, {4, 9, 7, 1, 5}}; Выход : Наименьший элемент главной диагонали: 1 Наибольший элемент главной диагонали: 11 Вторичный диагональный наименьший элемент: -10 Наибольший элемент вторичной диагонали: 11
Идея решения этой проблемы заключается в следующем: сначала проверьте матрицу обхода и достигните всех элементов диагоналей (для основной диагонали i == j и вторичной диагонали i + j = size_of_matrix-1) и сравните диагональный элемент с переменной min и max и возьмите новые min и максимальные значения. То же самое и со второстепенными диагоналями.
Вот реализация вышеуказанного подхода:
Пример 1: С O (n ^ 2) Сложность:
C ++
// CPP program to find smallest and // largest elements of both diagonals #include<bits/stdc++.h> using namespace std; // Function to find smallest and largest element // from principal and secondary diagonal void diagonalsMinMax( int mat[5][5]) { // take length of matrix int n = sizeof (*mat) / 4; if (n == 0) return ; // declare and initialize variables // with appropriate value int principalMin = mat[0][0], principalMax = mat[0][0]; int secondaryMin = mat[n - 1][0], secondaryMax = mat[n - 1][0]; for ( int i = 1; i < n; i++) { for ( int j = 1; j < n; j++) { // Condition for principal // diagonal if (i == j) { // take new smallest value if (mat[i][j] < principalMin) { principalMin = mat[i][j]; } // take new largest value if (mat[i][j] > principalMax) { principalMax = mat[i][j]; } } // Condition for secondary // diagonal if ((i + j) == (n - 1)) { // take new smallest value if (mat[i][j] < secondaryMin) { secondaryMin = mat[i][j]; } // take new largest value if (mat[i][j] > secondaryMax) { secondaryMax = mat[i][j]; } } } } cout << ( "Principal Diagonal Smallest Element: " ) << principalMin << endl; cout << ( "Principal Diagonal Greatest Element : " ) << principalMax << endl; cout << ( "Secondary Diagonal Smallest Element: " ) << secondaryMin << endl; cout << ( "Secondary Diagonal Greatest Element: " ) << secondaryMax << endl; } // Driver code int main() { // Declare and initialize 5X5 matrix int matrix[5][5] = {{ 1, 2, 3, 4, -10 }, { 5, 6, 7, 8, 6 }, { 1, 2, 11, 3, 4 }, { 5, 6, 70, 5, 8 }, { 4, 9, 7, 1, -5 }}; diagonalsMinMax(matrix); } // This code is contribuuted by // Shashank_Sharma |
Джава
// Java program to find // smallest and largest elements of both diagonals public class GFG { // Function to find smallest and largest element from // principal and secondary diagonal static void diagonalsMinMax( int [][] mat) { // take length of matrix int n = mat.length; if (n == 0 ) return ; // declare and initialize variables with appropriate value int principalMin = mat[ 0 ][ 0 ], principalMax = mat[ 0 ][ 0 ]; int secondaryMin = mat[n- 1 ][ 0 ], secondaryMax = mat[n- 1 ][ 0 ]; for ( int i = 1 ; i < n; i++) { for ( int j = 1 ; j < n; j++) { // Condition for principal // diagonal if (i == j) { // take new smallest value if (mat[i][j] < principalMin) { principalMin = mat[i][j]; } // take new largest value if (mat[i][j] > principalMax) { principalMax = mat[i][j]; } } // Condition for secondary // diagonal if ((i + j) == (n - 1 )) { // take new smallest value if (mat[i][j] < secondaryMin) { secondaryMin = mat[i][j]; } // take new largest value if (mat[i][j] > secondaryMax) { secondaryMax = mat[i][j]; } } } } System.out.println( "Principal Diagonal Smallest Element: " + principalMin); System.out.println( "Principal Diagonal Greatest Element : " + principalMax); System.out.println( "Secondary Diagonal Smallest Element: " + secondaryMin); System.out.println( "Secondary Diagonal Greatest Element: " + secondaryMax); } // Driver code static public void main(String[] args) { // Declare and initialize 5X5 matrix int [][] matrix = { { 1 , 2 , 3 , 4 , - 10 }, { 5 , 6 , 7 , 8 , 6 }, { 1 , 2 , 11 , 3 , 4 }, { 5 , 6 , 70 , 5 , 8 }, { 4 , 9 , 7 , 1 , - 5 } }; diagonalsMinMax(matrix); } } |
Python3
# Python3 program to find smallest and # largest elements of both diagonals # Function to find smallest and largest element # from principal and secondary diagonal def diagonalsMinMax(mat): # take length of matrix n = len (mat) if (n = = 0 ): return # declare and initialize variables # with appropriate value principalMin = mat[ 0 ][ 0 ] principalMax = mat[ 0 ][ 0 ] secondaryMin = mat[ 0 ][n - 1 ] secondaryMax = mat[ 0 ][n - 1 ] for i in range ( 1 , n): for j in range ( 1 , n): # Condition for principal # diagonal if (i = = j): # take new smallest value if (mat[i][j] < principalMin): principalMin = mat[i][j] # take new largest value if (mat[i][j] > principalMax): principalMax = mat[i][j] # Condition for secondary # diagonal if ((i + j) = = (n - 1 )): # take new smallest value if (mat[i][j] < secondaryMin): secondaryMin = mat[i][j] # take new largest value if (mat[i][j] > secondaryMax): secondaryMax = mat[i][j] print ( "Principal Diagonal Smallest Element: " , principalMin) print ( "Principal Diagonal Greatest Element : " , principalMax) print ( "Secondary Diagonal Smallest Element: " , secondaryMin) print ( "Secondary Diagonal Greatest Element: " , secondaryMax) # Driver code # Declare and initialize 5X5 matrix matrix = [[ 1 , 2 , 3 , 4 , - 10 ], [ 5 , 6 , 7 , 8 , 6 ], [ 1 , 2 , 11 , 3 , 4 ], [ 5 , 6 , 70 , 5 , 8 ], [ 4 , 9 , 7 , 1 , - 5 ]] diagonalsMinMax(matrix) # This code is contributed by Mohit kumar 29 |
C #
// C# program to find smallest and largest // elements of both diagonals using System; public class GFG { // Function to find smallest and largest element from // principal and secondary diagonal static void diagonalsMinMax( int [,] mat) { // take length of square matrix int n = mat.GetLength(0); if (n == 0) return ; // declare and initialize variables with appropriate value int principalMin = mat[0,0], principalMax = mat[0,0]; int secondaryMin = mat[n-1,0], secondaryMax = mat[n-1,0]; for ( int i = 1; i < n; i++) { for ( int j = 1; j < n; j++) { // Condition for principal // diagonal if (i == j) { // take new smallest value if (mat[i,j] < principalMin) { principalMin = mat[i,j]; } // take new largest value if (mat[i,j] > principalMax) { principalMax = mat[i,j]; } } // Condition for secondary // diagonal if ((i + j) == (n - 1)) { // take new smallest value if (mat[i,j] < secondaryMin) { secondaryMin = mat[i,j]; } // take new largest value if (mat[i,j] > secondaryMax) { secondaryMax = mat[i,j]; } } } } Console.WriteLine( "Principal Diagonal Smallest Element: " + principalMin); Console.WriteLine( "Principal Diagonal Greatest Element : " + principalMax); Console.WriteLine( "Secondary Diagonal Smallest Element: " + secondaryMin); Console.WriteLine( "Secondary Diagonal Greatest Element: " + secondaryMax); } // Driver code static void Main() { // Declare and initialize 5X5 matrix int [,] matrix = { { 1, 2, 3, 4, -10 }, { 5, 6, 7, 8, 6 }, { 1, 2, 11, 3, 4 }, { 5, 6, 70, 5, 8 }, { 4, 9, 7, 1, -5 } }; diagonalsMinMax(matrix); } // This code is contributed by Ryuga } |
PHP
<?php // PHP program to find smallest and // largest elements of both diagonals // Function to find smallest and largest element // from principal and secondary diagonal function diagonalsMinMax( $mat ) { // take length of $matrix $n = count ( $mat ); if ( $n == 0) return ; // declare and initialize variables // with appropriate value $principalMin = $mat [0][0]; $principalMax = $mat [0][0]; $secondaryMin = $mat [ $n - 1][0]; $secondaryMax = $mat [ $n - 1][0]; for ( $i = 1; $i < $n ; $i ++) { for ( $j = 1; $j < $n ; $j ++) { // Condition for principal // diagonal if ( $i == $j ) { // take new smallest value if ( $mat [ $i ][ $j ] < $principalMin ) { $principalMin = $mat [ $i ][ $j ]; } // take new largest value if ( $mat [ $i ][ $j ] > $principalMax ) { $principalMax = $mat [ $i ][ $j ]; } } // Condition for secondary // diagonal if (( $i + $j ) == ( $n - 1)) { // take new smallest value if ( $mat [ $i ][ $j ] < $secondaryMin ) { $secondaryMin = $mat [ $i ][ $j ]; } // take new largest value if ( $mat [ $i ][ $j ] > $secondaryMax ) { $secondaryMax = $mat [ $i ][ $j ]; } } } } echo "Principal Diagonal Smallest Element: " , $principalMin , "
" ; echo "Principal Diagonal Greatest Element : " , $principalMax , "
" ; echo "Secondary Diagonal Smallest Element: " , $secondaryMin , "
" ; echo "Secondary Diagonal Greatest Element: " , $secondaryMax , "
" ; } // Driver code // Declare and initialize 5X5 matrix $matrix = array ( array ( 1, 2, 3, 4, -10 ), array ( 5, 6, 7, 8, 6 ), array ( 1, 2, 11, 3, 4 ), array ( 5, 6, 70, 5, 8 ), array ( 4, 9, 7, 1, -5 )); diagonalsMinMax( $matrix ); // This code is contributed by // ihritik ?> |