public class Test1 { public static void testVampiro(int d1, int d2, int d3, int d4) { // Este método recibe cuatro dígitos y verifica en todas las posibles parejas de números // si la multiplicación de dos de ellas es igual a alguno de los números que se generan // con los 4 dígitos int[] v = { d1, d2, d3, d4 } ; // Se crea un vector con los 4 dígitos leídos int[] posibles = new int[24] ; // Con 4 dígitos solo se pueden formar 24 posibles valores int cont = 0; int a,b,c; boolean haySolucion = false; for(int i=0; i<v.length; i++) { for(int j=0; j<v.length; j++) { if(v[i]==v[j]) continue; // No se pueden repetir for(int k=0; k<v.length; k++) { if(v[k]==v[i]||v[k]==v[j]) continue; // No se puede repetir for(int l=0; l<v.length; l++) { if(v[l]==v[i]||v[l]==v[j]|| v[l]==v[k]) continue; // No se puede repetir posibles[cont++] = v[i]*1000+v[j]*100+v[k]*10+v[l]; } // fin for l } // fin for k } // fin for j } // fin for i // Para probar los numeros posibles usar esta instrucción: // for(int x: posibles) System.out.println(x); // Para generar las parejas se hace el siguiente ciclo: ciclo: for(int i=0; i<v.length; i++) { for(int j=0; j<v.length; j++) { if(v[i]==v[j]) continue; // No se pueden repetir a = v[i]*10 + v[j]; // Se obtiene el primer valor de dos dígitos for(int k=0; k<v.length; k++) { if(v[k]==v[i]||v[k]==v[j]) continue; // No se puede repetir for(int l=0; l<v.length; l++) { if(v[l]==v[i]||v[l]==v[j]|| v[l]==v[k]) continue; // No se puede repetir b = v[k]*10+v[l]; // Se obtiene el segundo valor de dos digitos c = a*b ; // Se obtiene la multiplicación de los dos valores // Se verifica si el número generado está entre los posibles resultados // y de ser así se escribe la respuesta y se termina el proceso for(int x: posibles) { if(c==x) { System.out.println("Respuesta encontrada: "+a+" x " +b+" = "+c); haySolucion=true; break ciclo; } // fin if } // fin for x } // fin for l } // fin for k } //fin for j } // fin for i if(!haySolucion) System.out.println("No hay un numero vampiro con los digitos " + d1+", "+d2+", "+d3+" y "+d4); } public static void main(String[] args) { testVampiro(1,2,3,4); testVampiro(1,3,9,5); testVampiro(3,9,1,5); } }
Soluciones a problemas comunes de programación en lenguaje java.
jueves, julio 28, 2011
Verificación de Números Vampiros
Con este programa se pretende evaluar si cuatro dígitos recibidos forman un número vampiro:
Suscribirse a:
Entradas (Atom)
Multiprocesamiento recursivo en JAVA 7
Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...
-
El algoritmo de ordenación por montículos o Heap Sort recorre el conjunto de elementos desde la posición de la mitad hasta la primera organi...
-
Generación con sustitución Si se quieren generar todas las posibles cadenas que se forman con un determinado número de caracteres, una pri...
-
Para solucionar el problema de la ruta más corta entre dos nodos de un grafo se puede utilizar el Algoritmo de Dijkstra , el cual sigue el s...