C ++ broma de reemplazo

Ajo y un poco travieso. Esta vez, la prueba de informar a su hermana asesinada a sangre fría.

Grabados originalmente en el laboratorio de la hermana secuencia de 1 a n, entre cualesquiera dos números separados por espacios. Sin embargo, "pozo hermana" ajo realmente espacios entre lo digital dio eliminado, toda la longitud de la secuencia digital en una cadena de dígitos y no hay espacios de cabecera es de 1 a 100.

Ahora mi hermana tiene la ira, el ajo encontrar rápidamente escribir un programa para la recuperación de datos de prueba.

entrada :

archivo de entrada de una línea, una cadena - son los datos experimentales Messing ajo.

La longitud de la cadena entre 1 y 100.

salida :

La línea común de salida, la hermana de los datos de prueba originales --1 a N salidas.

Hay un espacio entre dos datos.

Si más de un conjunto de acuerdo con los requisitos de la solución correcta, la salida de cualquiera de un grupo puede ser.

La única respuesta a esta pregunta no cumple con los requisitos de las respuestas son correctas

Copia entrada de la muestra

4111109876532

Salida de copias Muestra

4 1 11 10 9 8 7 6 5 3 2

 

ideas:

① Debido a que el número de columnas es de 1 a 100, puede ser un número de dos dígitos también se puede administrar una cadena numérica, utilizar el número calculado len el número de salida, seguido por el número de salvar la próxima salida b digital.

Número ② representado por x que se da salida a primera determinar el número de salida antes de ser hay el mismo número, si no utilizar la matriz b para mantener el valor de x, seguido de una función recursiva será próximo pasado a la función DEF; si entonces se especifica el número x es de dos dígitos a ser de salida, se almacena con dos números x, b se utiliza para mantener el valor de x, y menor el número pasado a la función DEF.

③ un espacio final de formato de salida cuando se determina que todos los números se han guardado utilizando la matriz b, b de acuerdo con la salida de un número de salidas.

#include <iostream> 
#include < string >
 utilizando  espacio de nombres std;
carbonizar un [ 105 ];
int len, n, b [ 105 ];
bool f, vis [ 105 ];
void def ( int s, int num) 
{ 
    si (f) de retorno ;
    si (s == len) 
    { 
        f = verdadero ;
        para ( int i = 0 ; i <num; ++ i) 
        { 
            cout<< b [i] << "  " ; 
        } 
        Devolver ; 
    } 
    Int x = a [s] - ' 0 ' ;
    si (vis [x] && x <= n && x> 0 ) 
    { 
        vis [x] = verdadero ; 
        b [num] = x; 
        def (s + 1 , num + 1 ); 
        vis [x] = false ; 
    } 
    X = x * 10 + a [s + 1 ] - ' 0 ' ;
    si (vis [x] && x <= n && x> 0 ) 
    { 
        vis [x] = verdadero ; 
        b [num] = x; 
        def (s + 2 , num + 1 ); 
        vis [x] = false ; 
    } 
} 
Int main () { 
    cin >> A; 
    len = strlen (a); 
    n = (len <= 9 len:? (len - 9 ) / 2 + 9 ); 
    def ( 0 );, 0 
}

 

Supongo que te gusta

Origin www.cnblogs.com/liushipeng648/p/12593432.html
Recomendado
Clasificación