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)