título Descripción
Introduzca un array entero positivo, el conjunto de todos los números dispuestos en un número empalmados juntos, el empalme puede imprimir todos los números de uno más pequeño. 3,32,321 matriz de entrada} {por ejemplo, imprimir el número mínimo de tres números puede estar dispuesto para 321.323.
Una solución a un problema: DFS
1 // tienda atravesada números de ciclo primeros 2 privada estática int [] los nums; . 3 // bandera está atravesada, atravesada es 1, de lo contrario 0 4. Privada estática Entero [] libro; . 5 // para que los resultados peso 6. privada estática HashSet <String> Resultado = new new HashSet <String> (); . 7 pública estática cadena PrintMinNumber ( int [] números) { 8. ArrayList <String> Lista = nuevos nueva ArrayList <String> (); . 9 IF (números. == 0 longitud ) { 10 retorno nulo ; . 11 } 12 es los nums = new new int [numbers.length]; 13 es libro = nuevo nuevo Entero [numbers.length]; 14 // tipo entero de matriz de almacenamiento nula predeterminada, no 0, por lo que para inicializar, clara 15 para ( int i = 0; I <book.length; I ++ ) { 16 libro [I] = 0 ; . 17 } 18 es DFS (números, 0 ); . 19 list.addAll (Resultado); 20 es el Collections.sort (Lista); 21 es int size = list.size (); 22 para ( int i = 0; i <tamaño; i ++ ) { 23 System.out.println (list.get (i)); 24 } 25 de retorno list.get (0 ); 26 } 27 privado estáticas void dfs ( int [] arr, int paso) { 28 si (paso == arr.Length) { 29 Cadena str = "" ; 30 para ( int i = 0; i <nums.length; i ++ ) { 31 str + = nums [i]; 32 } 33 se result.add (STR); 34 es el retorno ; 35 } 36 // iterar a través de toda la secuencia, para tratar todas las posibles 37 [ para ( int i = 0; I <arr.Length; I ++ ) { 38 es SI (Libro [I] = 0 = ) { 39 los nums [STEP] = ARR [I]; 40 libro [I] = 1. ; 41 es DFS (ARR ,. 1 + PASO ); 42 es libro [I] = 0 ; 43 es } 44 es } 45 }
1 público estáticas cadena PrintMinNumber01 ( int números []) { 2 Arrays.sort (números); 3 Cadena ans = "" ; 4 para ( int num: números) { 5 ans = (ans + num) .compareTo (num + ans) <0? (ans + num): (num + ans); 6 } 7 retorno American National Standard; 8 }
1 pública estática Cadena PrintMinNumber02 ( int [] números) { 2 int len = numbers.length; 3 = cadena de caracteres s "" ; 4 ArrayList <Integer> list = nuevo ArrayList <> (); 5 para ( int i = 0; i <len; i ++ ) { 6 list.add (números de [i]); 7 } 8 // 集合类工具Collections.sort (List <T> lista, Comparador <? Super T> c)对列表进行排序 9 Collections.sort (lista, nueva Comparador <Integer> () { 10 @ Override 11 pública int comparar (str1 entero, entero str2) { 12 Cadena s1 = str1 + "" + str2; 13 Cadena s2 = str2 + "" + str1; 14 de retorno s1.compareTo (s2); 15 } 16 }); 17 para ( int j: lista) { 18 s + = j; 19 } 20 de retorno s; 21 }
prueba:
1 público estáticas void principales (String [] args) { 2 int [] num = {3,32,321 }; 3 Cadena printMinNumber = PrintMinNumber02 (num); 4 System.out.println (printMinNumber); 5 } 6输出: 321323