escena:
Ocurrió un homicidio en determinado lugar, la policía identificó a cuatro sospechosos a través de la investigación, uno de ellos debe ser el homicida.
A dijo: yo no
B dijo: si C
C dijo: Si D
D dijo: C está diciendo tonterías
¿Se sabe que una persona dice una mentira y tres dicen la verdad? ¿Quién es el asesino?
analizar:
Cuando razonemos sobre esta pregunta, supondremos que A, B, C y D son los asesinos uno por uno, y luego juzgaremos que cumplen la condición de "una persona miente, tres verdades".
Suposición A | Supuesto B | Suposición C | Suposición D | |
A | × | √ | √ | √ |
B | × | × | √ | × |
C | × | × | × | √ |
D | √ | √ | √ | × |
Según el análisis de la tabla anterior, se puede ver que C es el asesino.
Código:
int main()
{ asesino de caracteres = 0; for (asesino = 'A'; asesino <= 'D'; asesino++) { if ((asesino != 'A') + (asesino == 'C') + (asesino == 'D') + (asesino! = 'D') == 3) { printf("%c\n", asesino); } } devuelve 0; }
Resumir:
Considere la marca de verificación anterior y el signo incorrecto como 1 y 0. Así que juzgue directamente las tres marcas de verificación, 1+1+1+0 = 3. El resultado de la simulación es el mismo que el resultado del razonamiento.
escena:
Cinco atletas participan en la competencia de clavados de plataforma de 10 metros, y sus predicciones son las siguientes:
A dijo: B segundo, yo tercero
B dijo: yo soy segundo, E es cuarto
C dijo: yo soy el primero, D es el segundo
D dijo: C último, soy tercero
E dijo: yo soy cuarto, A es primero
Se sabe que cada jugador tiene solo la mitad de la razón, y la programación determina la clasificación del juego.
analizar:
De acuerdo con el ejemplo del asesino anterior, se puede analizar que cada persona dijo dos condiciones. Hay uno correcto y otro incorrecto, es decir, un 0 y un 1. La clasificación de cada jugador puede ser del 1 al 5, así que haga una lista de todas las clasificaciones y juzgue si cumplen con la mitad de los requisitos.
Código:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
for (a = 1; a <= 5; a++)
{
for (b = 1; b <= 5; b++)
{
for (c = 1; c <= 5; c++)
{
for (d = 1; d <= 5; d++)
{
for (e = 1; e <= 5; e++)
{
if (((b == 2) + (a == 3) == 1) && (((b == 2) + (e == 4)) == 1)
&& (((c == 1) + (d == 2)) == 1) && (((c == 5) + (d == 3)) == 1)
&& (((e == 4) + (a == 1)) == 1))
{
if(a*b*c*d*e == 120)
printf("a = %d;b = %d;c = %d;d =%d;e = %d\n", a, b, c, d, e);
}
}
}
}
}
}
return 0;
}
Resumir:
Haga una lista de todas las situaciones de pedido posibles y luego haga que satisfaga la condición final. La razón por la cual lo anterior es igual a 120 es que 1*2*3*4*5 = 120, para evitar que dos personas clasifiquen en el mismo lugar.