Encuentre el elemento en la fila R’th y la columna C’th en un patrón 2D dado

Dados dos enteros R y C , la tarea es encontrar el elemento en la fila R y la columna C.
Patrón: 
 

  • Primer elemento de i -ésima fila =\frac{i*(i-1)}{2} + 1
  • Cada elemento es una diferencia creciente de progresión aritmética donde la diferencia común es 1.
  • Término de diferencia inicial = i + 1

Ejemplos: 
 

Entrada: R = 4, C = 4 
Salida: 25 
Explicación: 
Patrón de tamaño 4 * 4 es – 
1 3 6 10 
2 5 9 14 
4 8 13 19 
7 12 18 25 
Por lo tanto, Elemento en Pat[4][4] = 25
Entrada: R = 3, C = 3 
Salida: 13 
Explicación: 
Patrón de tamaño 3 * 3 es – 
1 3 6 
2 5 9 
4 8 13 
Por lo tanto, elemento en Pat[3][3] = 13 
 

Enfoque ingenuo: una solución simple es generar la array patrón de tamaño R * C y luego, finalmente, devolver el elemento en la fila R y la columna C.
Complejidad de tiempo: O(R*C) 
Espacio auxiliar: O(R*C)
Enfoque eficiente: La idea es encontrar el primer término de la R -ésima fila usando las fórmulas  \frac{R*(R+1)}{2}  y luego finalmente calcular el C -ésimo término de esa columna usando la ayuda de bucle .
A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation to compute the
// R'th row and C'th column of the
// given pattern
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to compute the
// R'th row and C'th column of the
// given pattern
int findValue(int R, int C)
{
 
    // First element of a given row
    int k = (R * (R - 1)) / 2 + 1;
 
    int diff = R + 1;
 
    // Element in the given column
    for (int i = 1; i < C; i++) {
        k = (k + diff);
        diff++;
    }
 
    return k;
}
 
// Driver Code
int main()
{
    int R = 4;
    int C = 4;
 
    // Function call
    int k = findValue(R, C);
 
    cout << k;
 
    return 0;
}

Java

// Java implementation to compute the
// R'th row and C'th column of the
// given pattern
import java.io.*;
 
class GFG{
     
// Function to compute the R'th
// row and C'th column of the
// given pattern
static int findValue(int R, int C)
{
 
    // First element of a given row
    int k = (R * (R - 1)) / 2 + 1;
 
    int diff = R + 1;
 
    // Element in the given column
    for(int i = 1; i < C; i++)
    {
       k = (k + diff);
       diff++;
    }
    return k;
}
 
// Driver code
public static void main (String[] args)
{
    int R = 4;
    int C = 4;
 
    // Function call
    int k = findValue(R, C);
 
    System.out.println(k);
}
}
 
// This code is contributed by mohit kumar 29

Python3

# Python3 implementation to find the
# R'th row and C'th column value in
# the given pattern
 
# Function to find the
# R'th row and C'th column value in
# the given pattern
def findValue(R, C):
 
    # First element of a given row
    k = (R*(R-1))//2 + 1
 
    diff = R + 1
 
    # Element in the given column
    for i in range(1, C):
        k = (k + diff)
        diff+= 1
 
    return k
 
# Driver Code
if __name__ == "__main__":
    R = 4
    C = 4
     
    k = findValue(R, C)
    print(k)

C#

// C# implementation to compute the
// R'th row and C'th column of the
// given pattern
using System;
class GFG{
     
// Function to compute the R'th
// row and C'th column of the
// given pattern
static int findValue(int R, int C)
{
 
    // First element of a given row
    int k = (R * (R - 1)) / 2 + 1;
 
    int diff = R + 1;
 
    // Element in the given column
    for(int i = 1; i < C; i++)
    {
        k = (k + diff);
        diff++;
    }
    return k;
}
 
// Driver code
public static void Main()
{
    int R = 4;
    int C = 4;
 
    // Function call
    int k = findValue(R, C);
 
    Console.Write(k);
}
}
 
// This code is contributed by Code_Mech

Javascript

<script>
// Javascript implementation to compute the
// R'th row and C'th column of the
// given pattern
 
// Function to compute the R'th
// row and C'th column of the
// given pattern
function findValue(R, C)
{
   
    // First element of a given row
    let k = (R * (R - 1)) / 2 + 1;
   
    let diff = R + 1;
   
    // Element in the given column
    for(let i = 1; i < C; i++)
    {
       k = (k + diff);
       diff++;
    }
    return k;
}
 
  // Driver Code
     
    let R = 4;
    let C = 4;
   
    // Function call
    let k = findValue(R, C);
   
     document.write(k);
       
</script>
Producción: 

25

 

Publicación traducida automáticamente

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