Java implementa el número mínimo de grupos pta

Los números dados 0-9 son varios. Puede ordenar los números en cualquier orden, pero deben usarse todos. El objetivo es hacer que el número final sea lo más pequeño posible (tenga en cuenta que 0 no puede ser el primer lugar). Por ejemplo: dados dos ceros, dos 1, tres 5 y un 8, el número más pequeño que obtenemos es 10015558.

Ahora dado un número, escriba un programa para generar el número más pequeño que se pueda componer.

Formato de entrada: la
entrada da 10 enteros no negativos en una fila, y el orden indica que tenemos el número 0, número 1, ... número 9. Los enteros están separados por un espacio. El número total de 10 dígitos no excede de 50, y tiene al menos 1 dígito distinto de cero.

Formato de
salida : muestra el número más pequeño que se puede componer en una línea.

Ejemplo de entrada:
2 2 0 0 0 3 0 0 1 0

Salida de muestra:
10015558

Ideas para resolver problemas: de hecho, es más fácil pensar en este problema. La idea específica es construir una matriz de todos los números del 0 al 9, y luego usar un bucle for para atravesar desde i = 1. Si este subíndice Si el valor de la matriz correspondiente no es menor que 0, es salida, lo que garantiza que la primera salida sea la más pequeña, excepto 0. Después de eso, recuerde reducir el valor de la matriz y dividirlo una y otra vez.

import java.util.Scanner;

/**
 *
 * @author lenovo
 */
public class JavaApplication12 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        
        int[] num = {0,1,2,3,4,5,6,7,8,9};
        
        for(int i = 0; i < 10; i++)
        {
            num[i] = input.nextInt(); //记录各个数出现的个数
        }
        for(int i = 1; i < 10; i++) //整个循环的作用是输出一个比0大的最小数
        {
            if(num[i] != 0)
            {   System.out.print(i);
                num[i]--;
                break;
            }
        }
        for(int i = 0; i < 10; i++) //输出数组全部的值(除上个循环已经输出的)
            for(int j = 0 ; j < num[i]; j++)
                System.out.print(i);
    }
}

Si no ve la pregunta con claridad, puede pensar que los números de entrada son la combinación más pequeña, así que asegúrese de ver la pregunta con claridad y espere que sea útil para todos.

Publicado 3 artículos originales · elogiado 3 · visitas 27

Supongo que te gusta

Origin blog.csdn.net/weixin_45834063/article/details/105453787
Recomendado
Clasificación