Número de pasos requeridos para llegar al punto (x,y) desde (0,0) utilizando la forma de zig-zag

Dada una coordenada (x, y) . La tarea es calcular el número de pasos requeridos para alcanzar el punto (x, y) desde (0, 0) utilizando el modo zig-zag y no puede viajar en línea recta por más de 1 unidad. Además, comience a moverse a lo largo del eje Y.
Por ejemplo, podemos llegar al Punto denotado por el color rojo en las formas respectivas como se muestra en el siguiente diagrama: 
 

Ejemplos: 
 

Input: x = 4, y = 4
Output: 8
In the diagram above the line is passing
using 8 steps.

Input: x = 4, y = 3
Output: 9

Input: x = 2, y = 1
Output: 5

Planteamiento : Al dibujar un pequeño diagrama podemos ver los dos casos: 
 

  • Caso 1 : si x es menor que y, la respuesta siempre será x + y + 2*((yx)/2) .
  • Caso 2 : si x es mayor que igual a y, la respuesta siempre será x + y + 2*(((xy)+1)/2) .

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

C++

// C++ program to find the number of steps
// required to reach (x, y) from (0, 0) following
// a zig-zag path
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the required position
int countSteps(int x, int y)
{
    if (x < y) {
        return x + y + 2 * ((y - x) / 2);
    }
    else {
        return x + y + 2 * (((x - y) + 1) / 2);
    }
}
 
// Driver Code
int main()
{
    int x = 4, y = 3;
    cout << countSteps(x, y);
 
    return 0;
}

Java

// Java program to find the number of steps
// required to reach (x, y) from (0, 0) following
// a zig-zag path
 
class GfG
{
 
// Function to return the required position
static int countSteps(int x, int y)
{
    if (x < y)
    {
        return x + y + 2 * ((y - x) / 2);
    }
    else
    {
        return x + y + 2 * (((x - y) + 1) / 2);
    }
}
 
// Driver Code
public static void main(String[] args)
{
    int x = 4, y = 3;
    System.out.println(countSteps(x, y));
}
}
 
// This code is contributed by Prerna Saini

Python3

# Python3 program to find the number of
# steps required to reach (x, y) from
# (0, 0) following a zig-zag path
   
# Function to return the required position
def countSteps(x, y):
  
    if x < y:
        return x + y + 2 * ((y - x) // 2)
      
    else:
        return x + y + 2 * (((x - y) + 1) // 2)
 
# Driver Code
if __name__ == "__main__":
  
    x, y = 4, 3
    print(countSteps(x, y))
   
# This code is contributed by Rituraj Jain

C#

// C# program to find the number of steps
// required to reach (x, y) from (0, 0) 
// following a zig-zag path
using System;
 
class GfG
{
 
// Function to return the required position
static int countSteps(int x, int y)
{
    if (x < y)
    {
        return x + y + 2 * ((y - x) / 2);
    }
    else
    {
        return x + y + 2 * (((x - y) + 1) / 2);
    }
}
 
// Driver Code
public static void Main()
{
    int x = 4, y = 3;
    Console.WriteLine(countSteps(x, y));
}
}
 
// This code is contributed by Code_Mech.

PHP

<?php
// PHP program to find the number of steps
// required to reach (x, y) from (0, 0)
// following a zig-zag path
 
// Function to return the required position
function countSteps($x, $y)
{
    if ($x < $y)
    {
        return $x + $y + 2 *
             (($y - $x) / 2);
    }
    else
    {
        return $x + $y + 2 *
            ((($x - $y) + 1) / 2);
    }
}
 
// Driver Code
$x = 4; $y = 3;
echo(countSteps($x, $y));
 
// This code is contributed
// by Code_Mech.
?>

Javascript

<script>
 
    // Javascript program to find the number of steps
    // required to reach (x, y) from (0, 0) following
    // a zig-zag path
 
    // Function to return the required position
    function countSteps(x, y)
    {
      if (x < y) {
        return x + y + 2 * parseInt((y - x) / 2);
      }
      else {
        return x + y + 2 * parseInt(((x - y) + 1) / 2);
      }
    }
 
    // Driver Code
    var x = 4, y = 3;
    document.write(countSteps(x, y));
 
// This code is contributed by rrrtnx.
  </script>
Producción: 

9

 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

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