Dados N planos. La tarea es encontrar el número máximo de intersecciones de línea que se pueden formar a través de las intersecciones de N planos.
Ejemplos:
Entrada: N = 3
Salida: 3
Entrada: N = 5
Salida: 10
Aproximación:
Sean N planos tales que no se intersequen 3 planos en una sola línea de intersección y no haya 2 planos paralelos entre sí. Debería ser posible agregar el plano ‘N+1’ a este espacio manteniendo las dos condiciones anteriores. En ese caso, este plano intersecaría cada uno de los N planos en ‘N’ líneas distintas.
Por lo tanto, el plano ‘N+1’ podría agregar como máximo ‘N’ nuevas líneas al recuento total de líneas de intersección. De manera similar, el plano N-ésimo podría agregar como máximo “N-1′ líneas distintas de intersección. Es fácil entonces ver que, para planos ‘N’, el número máximo de líneas de intersección podría ser:
(N-1) + (N-2) +...+ 1 = N*(N-1)/2
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to count maximum number of // intersections possible int countIntersections(int n) { return n * (n - 1) / 2; } // Driver Code int main() { int n = 3; cout << countIntersections(n); return 0; }
Java
// Java implementation of the approach class GFG { // Function to count maximum number of // intersections possible static int countIntersections(int n) { return n * (n - 1) / 2; } // Driver Code public static void main (String[] args) { int n = 3; System.out.println(countIntersections(n)); } } // This code is contributed by AnkitRai01
Python3
# Python3 implementation of the above approach # Function to count maximum number of # intersections possible def countIntersections(n): return n * (n - 1) // 2 # Driver Code n = 3 print(countIntersections(n)) # This code is contributed by mohit kumar
C#
// C# implementation of the approach using System; class GFG { // Function to count maximum number of // intersections possible static int countIntersections(int n) { return n * (n - 1) / 2; } // Driver Code public static void Main (String[] args) { int n = 3; Console.WriteLine(countIntersections(n)); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript implementation of the above approach // Function to count maximum number of // intersections possible function countIntersections(n) { return n * (n - 1) / 2; } // Driver Code var n = 3; document.write(countIntersections(n)); </script>
3
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)