Compruebe si es posible hacer dos arrays estrictamente crecientes intercambiando solo los valores correspondientes

Dadas dos arrays n * m A[][] y B[][] , la tarea es hacer que ambas arrays sean estrictamente crecientes (tanto filas como columnas) solo intercambiando dos elementos en arrays diferentes si están ubicados en la posición correspondiente es decir , A[i][j] solo se puede intercambiar con B[i][j] . Si es posible, escriba , de lo contrario , No.
Ejemplos: 

Input: 
A[][] = {{2, 10},      B[][] = {{9, 4},  
         {11, 5}}               {3, 12}}
Output: Yes
Swap 2 with 9 and 5 with 12 then the resulting 
matrices will be strictly increasing.

Input: 
A[][] = {{1, 3},       B[][] = {{3, 1}, 
         {2, 4},                {3, 6}, 
         {5, 10}}               {4, 8}}
Output: No

Enfoque: podemos resolver este problema usando la técnica codiciosa . Intercambia A[i][j] con B[i][j] si A[i][j] > B[i][j] . Al final para cada i y j tenemos A[i][j] ≤ B[i][j]
Si las arrays resultantes son estrictamente crecientes, imprima ; de lo contrario, imprima No.
A continuación se muestra la implementación del enfoque anterior: 

C++

#include<bits/stdc++.h>
using namespace std;
 
// Function to check whether the matrices
// can be made strictly increasing
// with the given operation
string Check(int a[][2], int b[][2], int n, int m)
{
 
    // Swap only when a[i][j] > b[i][j]
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            if (a[i][j] > b[i][j])
                swap(a[i][j], b[i][j]);
 
    // Check if rows are strictly increasing
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m - 1; j++)
            if(a[i][j] >= a[i][j + 1] || b[i][j] >= b[i][j + 1])
                return "No";
 
    // Check if columns are strictly increasing
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < m ;j++)
            if (a[i][j] >= a[i + 1][j] || b[i][j] >= b[i + 1][j])
                return "No";
 
    return "Yes";
}
 
// Driver code
int main()
{
    int n = 2, m = 2;
    int a[][2] = {{2, 10}, {11, 5}};
    int b[][2] = {{9, 4}, {3, 12}};
    cout << (Check(a, b,n,m));
}
 
// This code is contributed by chitranayal

Java

class GFG{
     
// Function to check whether the matrices
// can be made strictly increasing
// with the given operation
public static String Check(int a[][], int b[][],
                           int n, int m)
{
     
    // Swap only when a[i][j] > b[i][j]
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            if (a[i][j] > b[i][j])
            {
                int temp = a[i][j];
                a[i][j] = b[i][j];
                b[i][j] = temp;
            }
  
    // Check if rows are strictly increasing
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m - 1; j++)
            if (a[i][j] >= a[i][j + 1] ||
                b[i][j] >= b[i][j + 1])
                return "No";
  
    // Check if columns are strictly increasing
    for(int i = 0; i < n - 1; i++)
        for(int j = 0; j < m ;j++)
            if (a[i][j] >= a[i + 1][j] ||
                b[i][j] >= b[i + 1][j])
                return "No";
  
    return "Yes";
}  
 
// Driver code
public static void main(String[] args)
{
    int n = 2, m = 2;
    int a[][] = { { 2, 10 }, { 11, 5 } };
    int b[][] = { { 9, 4 }, { 3, 12 } };
     
    System.out.print(Check(a, b, n, m));
}
}
 
// This code is contributed by divyeshrabadiya07

Python3

# Function to check whether the matrices
# can be made strictly increasing
# with the given operation
def Check(a, b):
 
    # Swap only when a[i][j] > b[i][j]
    for i in range(n):
        for j in range(m):
            if a[i][j]>b[i][j]:
                a[i][j], b[i][j]= b[i][j], a[i][j]
 
    # Check if rows are strictly increasing
    for i in range(n):
        for j in range(m-1):
            if(a[i][j]>= a[i][j + 1] or b[i][j]>= b[i][j + 1]):
                return "No"
 
    # Check if columns are strictly increasing
    for i in range(n-1):
        for j in range(m):
            if (a[i][j]>= a[i + 1][j] or b[i][j]>= b[i + 1][j]):
                return "No"
 
    return "Yes"
 
# Driver code
if __name__=="__main__":
     
    n, m = 2, 2
    a =[[2, 10], [11, 5]]
    b =[[9, 4], [3, 12]]
    print(Check(a, b))

C#

// C# implementation of the
// above approach
using System;
using System.Collections;
class GfG{
      
// Function to check
// whether the matrices
// can be made strictly
// increasing with the
// given operation
static string Check(int [,]a, int [,]b,
                    int n, int m)
{
  // Swap only when
  // a[i][j] > b[i][j]
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (a[i, j] > b[i, j])
      {
        int tmp = a[i, j];
        a[i, j] = b[i, j];
        b[i, j] = tmp;
      }
 
  // Check if rows are
  // strictly increasing
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m - 1; j++)
      if(a[i, j] >= a[i, j + 1] ||
         b[i, j] >= b[i, j + 1])
        return "No";
 
  // Check if columns are
  // strictly increasing
  for (int i = 0; i < n - 1; i++)
    for (int j = 0; j < m ; j++)
      if (a[i, j] >= a[i + 1, j] ||
          b[i, j] >= b[i + 1, j])
        return "No";
 
  return "Yes";
}
      
// Driver Code
public static void Main(string []arg)
{
  int n = 2, m = 2;
  int [,]a = {{2, 10}, {11, 5}};
  int [,]b = {{9, 4}, {3, 12}};
  Console.Write(Check(a, b, n, m));
}
}
 
// This code is contributed by Rutvik_56

PHP

<?php
// PHP implementation of the approach
 
// Function to check whether the matrices
// can be made strictly increasing
// with the given operation
function Check($a, $b, $n, $m)
{
 
    // Swap only when a[i][j] > b[i][j]
    for ($i = 0; $i < $n; $i++)
    {
        for ($j= 0; $j < $n; $j++)
        {
            if ($a[$i][$j] > $b[$i][$j])
            {
                $temp = $a[$i][$j];
                $a[$i][$j] = $b[$i][$j];
                $b[$i][$j] = $temp;
            }
        }
    }
             
 
    // Check if rows are strictly increasing
    for ($i = 0; $i < $n; $i++)
    {
        for ($j= 0;$j < $m-1 ; $j++)
        {
            if($a[$i][$j] >= $a[$i][$j + 1] or
               $b[$i][$j] >= $b[$i][$j + 1])
                return "No";
        }
    }
 
    // Check if columns are strictly increasing
    for ($i = 0; $i < $n - 1; $i++)
    {
        for ($j = 0; $j < $m; $j++)
        {
            if ($a[$i][$j] >= $a[$i + 1][$j] or
                $b[$i][$j] >= $b[$i + 1][$j])
                return "No";
        }
    }
    return "Yes";
}
 
// Driver code
$n = 2; $m = 2;
$a = array(array(2, 10), array(11, 5));
$b = array(array(9, 4), array(3, 12));
print(Check($a, $b, $n, $m));
 
// This code is contributed by AnkitRai01
?>

Javascript

<script>
  
// Function to check whether the matrices
// can be made strictly increasing
// with the given operation
function Check(a, b, n, m)
{
      
    // Swap only when a[i][j] > b[i][j]
    for(let i = 0; i < n; i++)
        for(let j = 0; j < m; j++)
            if (a[i][j] > b[i][j])
            {
                let temp = a[i][j];
                a[i][j] = b[i][j];
                b[i][j] = temp;
            }
   
    // Check if rows are strictly increasing
    for(let i = 0; i < n; i++)
        for(let j = 0; j < m - 1; j++)
            if (a[i][j] >= a[i][j + 1] ||
                b[i][j] >= b[i][j + 1])
                return "No";
   
    // Check if columns are strictly increasing
    for(let i = 0; i < n - 1; i++)
        for(let j = 0; j < m ;j++)
            if (a[i][j] >= a[i + 1][j] ||
                b[i][j] >= b[i + 1][j])
                return "No";
   
    return "Yes";
} 
       
 
// Driver Code
 
        let n = 2, m = 2;
    let a = [[ 2, 10 ], [ 11, 5 ]];
    let b = [[ 9, 4 ],  [3, 12 ]];
      
    document.write(Check(a, b, n, m));
      
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(N*M), ya que estamos atravesando la array.

Espacio auxiliar: O(1), ya que no estamos utilizando ningún espacio adicional.

Publicación traducida automáticamente

Artículo escrito por saurabh sisodia 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 *