Recientemente ha salido un libro para los programadores competitivos, llamado Competitive Programmer's Handbook, en tal libro en el capítulo 2 se habla de complejidades y reglas para calcularlas según la Notación O, como está de moda automatizar todo, en esta ocasión se quiere automatizar el cálculo de complejidades y mostrar éstas en notación O.
Las reglas para el cálculo de complejidades en notación O son las siguientes:
La primera línea contiene un número entero 1 <= t <= 500 que indica la cantidad de programas a analizar.
Por cada programa, la primera línea tendrá un número entero 1<c<100 que indica la cantidad de líneas de código del programa, en las siguientes c líneas se incluirán las líneas de código sin indentación en lenguaje C++.
Una línea de código puede ser:
Inicio de ciclo | : | for(int cont = 0; cont < n; cont + +){ |
Fin de ciclo | : | } |
Declaración e Inicialización | : | int nombreVariable = 0; |
Incremento de valor | : | nombreVariable + +; |
Para cada programa imprimir la complejidad en notación O de las líneas de código, según el siguiente formato O(complejidad), donde complejidad es igual a la complejidad en notación O del programa, vea los ejemplos para mejor entendimiento
4 6 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ for(int k=0;k<n;k++){ } } } 8 int x=0; for(int i=0;i<n;i++){ } for(int j=0;j<n;j++){ x++; } for(int k=0;k<n;k++){ } 6 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ } } for(int k=0;k<n;k++){ } 1 int x=0;
O(n^3) O(n^1) O(n^2) O(1)
#2017 #obi-distrital