Solución del problema de Pintia——7-27 Juego de adivinanzas de sombreros

7-27 Juego de adivinar sombreros

Titulo original:

Los bebés juegan juntos al juego del sombrero de adivinanzas. Se colocó un sombrero en la cabeza de cada persona, algunos eran negros y otros amarillos. Todos pueden ver los sombreros en las cabezas de otras personas, pero no los suyos propios. Una vez que comienza el juego, todos pueden adivinar el color del sombrero que tienen en la cabeza, o pueden abstenerse de adivinar. Si nadie adivina mal y al menos una persona adivina correctamente, todos los bebés ganarán un gran premio. Si nadie adivina, o si solo una persona adivina mal, no se entregará ningún premio a todos los bebés.
El siguiente orden da los colores de una fila de gorros, se supone que cuando cada grupo de bebés viene a jugar, los gorros se distribuyen en este orden. Luego se dan los resultados de las conjeturas de cada grupo de bebés y se le pide que juzgue si pueden ganar el gran premio.

Formato de entrada:

La entrada primero da un número entero positivo N (2< N ≤100) en una línea , que es el número de sombreros. La segunda línea muestra los colores de N sombreros, y los números 1representan el negro y 2el amarillo. A continuación, se proporciona
un número entero positivo K (≤10), seguido de K líneas. Cada línea proporciona los resultados de las adivinanzas de un grupo de bebés. Además de seguir usando números 1para representar el negro y 2el amarillo, 0significa que el bebé se abstiene de adivinación.
Los números de la misma línea están separados por espacios.

Formato de salida:

Para cada grupo de bebés que juegan, si pueden ganar el gran premio, envíelo en una línea Da Jiang!!!; de lo contrario, envíelo Ai Ya.

.

Ideas para resolver problemas:

  1. Importe readlineel módulo y cree un objeto de interfaz: primero readlineintroduzca el módulo y use createInterfacemétodos para crear un objeto de interfaz rl. Este objeto establece el flujo de entrada en entrada estándar.
  2. Leer entrada y almacenar: al escuchar 'line'eventos, la entrada se almacena en una matriz buf.
  3. Deconstruya la tarea para obtener la respuesta correcta y la respuesta del estudiante: use splitel método para dividir el segundo elemento (es decir, la matriz de respuestas correctas) por espacios y use mapel método para convertir cada elemento en un número y almacenarlo en una variable; use el método para convertir ansel cuarto elemento y los siguientes. Los elementos (es decir, la matriz de respuestas de los estudiantes) se almacenan en una variable text, que en este caso textes una matriz de cadenas.
  4. Iterar sobre la matriz de respuestas de los estudiantes: utilice for...ofun bucle textpara iterar sobre cada elemento temp.
  5. Determine si la matriz de respuestas del estudiante es exactamente la misma que la matriz de respuestas correcta: use dos variables flagy k, donde flagel valor inicial es true, kque indica el número de 0 elementos en la matriz de respuestas del estudiante. tempPara cada elemento atravesado usando el bucle interno temp[j], si temp[j]es 0, se incrementará ken 1; de lo contrario, si es temp[j]igual ans[j]a, el bucle continuará; de lo contrario, se establecerá flagen false.
  6. Salida de acuerdo con el resultado del juicio: si es kigual temp.length, significa que la matriz de respuestas del estudiante es 0, luego genera "Ai Ya"; de lo contrario, si es igual flag, truesignifica que la matriz de respuestas del estudiante es exactamente la misma que la matriz de respuestas correcta , luego genera "Da Jiang!!!"; de lo contrario, genera "Ai Ya".
  7. Genere el resultado una vez finalizado el ciclo: utilice console.logel resultado del juicio para generar la matriz de respuestas de cada estudiante.

.

Código JavaScript (nodo):

const r = require("readline");
const rl = r.createInterface({
    
    
    input: process.stdin
});
let buf = [];
rl.on('line', (input) => buf.push(input));
rl.on('close', () => {
    
    
    let ans = buf[1].split(" ").map(Number);
    let text = buf.slice(3);

    for (let i = 0; i < text.length; i++) {
    
    
        let temp = text[i].split(" ").map(Number);
        let flag = true;
        let k = 0;
        for (let j = 0; j < temp.length; j++) {
    
    

            if (temp[j] == 0) {
    
    
                k++;
            } else if (temp[j] == ans[j]) {
    
    
                continue;
            } else {
    
    
                flag = false
            }

        }
        if (k == temp.length) {
    
    
            console.log("Ai Ya");
        } else {
    
    
            console.log(flag ? "Da Jiang!!!" : "Ai Ya");
        }
    }

});

.

Análisis de complejidad:

Complejidad del tiempo: O (n*m)
Complejidad espacial: O (n)

Supongo que te gusta

Origin blog.csdn.net/Mredust/article/details/133519976
Recomendado
Clasificación