El Dr. rompecabezas enigma método de fuerza bruta en Java
familia honesta y familia está acostado isla a partir de dos grupos étnicos diferentes, familia honesta que siempre dicen la verdad, la familia mentido que nunca decir mentiras. Dr. acertijos era un hombre inteligente, que quiere juzgar a las personas encuentran a partir del cual la nación.
El Dr. acertijos encontró con tres hombres, sabiendo que pueden haber venido de una familia honesta o familiar mentira. Con el fin de investigar los tres hombres es lo que la familia, el doctor se les hizo a sus preguntas, esta es la conversación: la primera persona a preguntar: "¿De qué tienes familia?" R: "Hay dos de nosotros de una familia honesta . "el segundo hombre dijo:" no hablar sin sentido, tenemos sólo una de cada tres personas son familia honesta, "la segunda persona después de la tercera persona que escucha a las palabras, dijo:" .. Sí, sólo hay una familia honesta, "
por favor, de acuerdo con su que son la respuesta para determinar qué familia.
código:
public class 真假族
{
/**
* @param args
*/
public static void main(String[] args) {
// 迷语博士遇到三个人,知道他们可能是来自诚实族或说谎族的。
// 为了调查这三个人是什么族的,博士分别问了他们的问题,这是他们的对话:
// 问第一个人:“你们是什么族?”,答:“我们之中有两个来自诚实族。
// ”第二个人说:“不要胡说,我们三个人中只有一个是诚实族的。
// ”第三个人听了第二个人的话后说:“对,就是只有一个诚实族的。”
// 暴力破解法
int a, b, c;
boolean A, B, C;
for (a = 0; a <= 1; a++)/* 穷举每个人是说谎还是诚实的全部情况 */
{
if (a == 0)
{
A = false;/* 说谎:false 诚实:true */
} else
{
A = true;
}
for (b = 0; b <= 1; b++)
{
if (b == 0)
{
B = false;/* 说谎:false 诚实:true */
} else
{
B = true;
}
for (c = 0; c <= 1; c++)
{
if (c == 0)
{
C = false;/* 说谎:false 诚实:true */
} else
{
C = true;
}
if (((A && a + b + c == 2) || (!A && a + b + c != 2))
&& ((B && a + b + c == 1) || (!B && a + b + c != 1))
&& ((C && a + b + c == 1) || (!C && a + b + c != 1)))
{
System.out.println(A?"诚实族" : "说谎族");
System.out.println(B?"诚实族" : "说谎族");
System.out.println(C?"诚实族" : "说谎族");
}
}
}
}
}
}
salida:
说谎族
说谎族
说谎族