Reorganizar Matrix dado reemplazando mat[i][j] con mat[ mat[i][j] ][ mat[j][i] ]

Dada una array cuadrada mat[][] de orden N que contiene números enteros en el rango [0, N) , la tarea es reorganizar los elementos de la array de la manera dada. Reemplace el elemento en mat[i][j] con el elemento en mat[x][y] donde x es el número en mat[i][j] e y es el número en mat[j][i]

Ejemplos: 

Entrada: mat[][] = {{1, 3, 0, 4, 2}, 
                           {0, 1, 2, 3, 4}, 
                           {3, 4, 2, 1, 0}, 
                           {4, 1, 0, 2, 2}, 
                           {0, 1, 2, 1, 0}}
Salida: 1 4 4 0 3 
              4 1 0 1 1 
              4 2 2 0 0 
              0 3 3 2 4 
              0 4 3 2 1
Explicación: mat[ 0][1] se reemplaza por mat[3][0] = 4, porque 
x = mat[0][1] = 3, y = mat[1][0] = 0 y mat[x][y ] = mat[3][0] = 4.
Y similar para todas las demás posiciones. 

Entrada: mat[][] = {{0, 1, 1}, 
                          {2, 1, 2}, 
                          {0, 2, 0}}
Salida:  0 2 2 
               2 1 0 
               1 0 0 

 

Enfoque: La idea es ir de acuerdo con el requisito del problema. Recorra la array por filas y encuentre el elemento en mat[i][j] y mat[j][i]. Use estos números x e y como coordenadas para obtener el valor de reemplazo para mat[i][j].

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ code to rearrange the matrix
// in specified manner.
#include <bits/stdc++.h>
using namespace std;
 
const int N = 5;
 
// Function to print matrix.
void showMatrix(int mat[][N])
{
    int i, j;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            cout << mat[i][j] << " ";
        }
        cout << endl;
    }
}
 
// Function to rearrange the matrix
// in specified manner.
void RearrangeMatrix(int mat[][N])
{
    int x, y, i, j;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            x = mat[i][j];
            y = mat[j][i];
            cout << mat[x][y] << " ";
        }
        cout << "\n";
    }
}
 
// Driver code
int main()
{
    int mat[][N] = { { 1, 3, 0, 4, 2 },
                     { 0, 1, 2, 3, 4 },
                     { 3, 4, 2, 1, 0 },
                     { 4, 1, 0, 2, 2 },
                     { 0, 1, 2, 1, 0 } };
 
    RearrangeMatrix(mat);
    return 0;
}

Java

// Java code to rearrange the matrix
// in specified manner.
import java.util.*;
public class GFG
{
 
static int N = 5;
 
// Function to print matrix.
static void showMatrix(int mat[][])
{
    int i, j;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            System.out.print(mat[i][j] + " ");
        }
        System.out.println();
    }
}
 
// Function to rearrange the matrix
// in specified manner.
static void RearrangeMatrix(int mat[][])
{
    int x, y, i, j;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            x = mat[i][j];
            y = mat[j][i];
            System.out.print(mat[x][y] + " ");
        }
        System.out.println();
    }
}
 
// Driver code
public static void main(String args[])
{
    int mat[][] = { { 1, 3, 0, 4, 2 },
                     { 0, 1, 2, 3, 4 },
                     { 3, 4, 2, 1, 0 },
                     { 4, 1, 0, 2, 2 },
                     { 0, 1, 2, 1, 0 } };
 
    RearrangeMatrix(mat);
 
}
}
 
// This code is contributed by Samim Hossain Mondal.

Python3

# Python code for the above approach
N = 5;
 
# Function to print matrix.
def showMatrix(mat):
    i = None
    j = None
    for i in range(N):
        for j in range(N):
            print(mat[i][j], end=" ");
        print('')
 
# Function to rearrange the matrix
# in specified manner.
def RearrangeMatrix(mat):
    x = None
    y = None
    i = None
    j = None
    for i in range(N):
        for j in range(N):
            x = mat[i][j];
            y = mat[j][i];
            print(mat[x][y], end= " ");
        print('')
 
# Driver code
mat = [[1, 3, 0, 4, 2], [0, 1, 2, 3, 4],
       [3, 4, 2, 1, 0], [4, 1, 0, 2, 2],
       [0, 1, 2, 1, 0]];
 
RearrangeMatrix(mat);
 
# This code is contributed by Saurabh Jaiswal

C#

// C# code to rearrange the matrix
// in specified manner.
using System;
public class GFG
{
 
  static int N = 5;
 
  // Function to print matrix.
  static void showMatrix(int[, ] mat)
  {
    int i, j;
    for (i = 0; i < N; i++) {
      for (j = 0; j < N; j++) {
        Console.Write(mat[i, j] + " ");
      }
      Console.WriteLine();
    }
  }
 
  // Function to rearrange the matrix
  // in specified manner.
  static void RearrangeMatrix(int[, ] mat)
  {
    int x, y, i, j;
    for (i = 0; i < N; i++) {
      for (j = 0; j < N; j++) {
        x = mat[i, j];
        y = mat[j, i];
        Console.Write(mat[x, y] + " ");
      }
      Console.WriteLine();
    }
  }
 
  // Driver code
  public static void Main()
  {
    int[, ] mat = { { 1, 3, 0, 4, 2 },
                   { 0, 1, 2, 3, 4 },
                   { 3, 4, 2, 1, 0 },
                   { 4, 1, 0, 2, 2 },
                   { 0, 1, 2, 1, 0 } };
 
    RearrangeMatrix(mat);
  }
}
 
// This code is contributed by ukasp.

Javascript

<script>
      // JavaScript code for the above approach
      let N = 5;
 
      // Function to print matrix.
      function showMatrix(mat) {
          let i, j;
          for (i = 0; i < N; i++) {
              for (j = 0; j < N; j++) {
                  document.write(mat[i][j] + " ");
              }
              document.write('<br>')
          }
      }
 
      // Function to rearrange the matrix
      // in specified manner.
      function RearrangeMatrix(mat) {
          let x, y, i, j;
          for (i = 0; i < N; i++) {
              for (j = 0; j < N; j++) {
                  x = mat[i][j];
                  y = mat[j][i];
                  document.write(mat[x][y] + " ");
              }
              document.write('<br>')
          }
      }
 
      // Driver code
 
      let mat = [[1, 3, 0, 4, 2],
      [0, 1, 2, 3, 4],
      [3, 4, 2, 1, 0],
      [4, 1, 0, 2, 2],
      [0, 1, 2, 1, 0]];
 
      RearrangeMatrix(mat);
 
// This code is contributed by Potta Lokesh
  </script>
Producción

1 4 4 0 3 
4 1 0 1 1 
4 2 2 0 0 
0 3 3 2 4 
0 4 3 2 1 

Complejidad de Tiempo: O(N 2 )
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por pintusaini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *