原文 : http://www.cnblogs.com/lxinxuan/archive/2007/08/29/874966.html
引文如下 :
有A、B、C、D四个人,他们各说了两句话:
A说:
1)我是在B之前一位到达(举例:比如,B第二位到达,那么A就是第一位,下同)
2)我不是第一名到达的
B说:
1)我是在C之前一位到达
2)我不是第二名到达的
C说:
1)我是在D之前一位到达
2)我不是第三名到达的
D说:
1)我是在A之前一位到达
2)我不是第四名到达的
其中:1)只有两句话是真的,但不一定是同一个人说的,其余六句话都是假的;
2)第一名的那个人说了一句真话。(是否只说了一句真话,还是两句都是真话?不得而知)
求:A、B、C、D四个人的到达顺序。
1) 思路 :
1,把8个问题转化成表达式
function p( a , b) { return a == (b - 1)? 1 : 0 }
function q ( c , d ) { return c != d ? 1 : 0; }
2,从结果出发, 找出4个人先后顺序的排列组合
var man = {A:1,B:2,C:3,D:4};
3, 把八个问题的结果 按照1,0 相加 如果结果为2 并且第一的人至少有1个是1的话为正解
2) 代码 :
function count() {
var man = {A:1,B:2,C:3,D:4};
var listResult = makeKN();
var result = [];
var resultStr = "";
for (var i = 0 , n = listResult.length ; i < n ; i ++ ) {
man.A = listResult[i][0];
man.B = listResult[i][1];
man.C = listResult[i][2];
man.D = listResult[i][3];
var A1 = p(man.A , man.B );
var A2 = q(man.A , 1);
var B1 = p(man.B , man.C );
var B2 = q(man.B , 2);
var C1 = p(man.C , man.D );
var C2 = q(man.C , 3);
var D1 = p(man.D , man.A );
var D2 = q(man.D , 4);
var resultNum = (A1 + A2 + B1 + B2 + C1 + C2 + D1 + D2);
if ( resultNum == 2 ) {
if (k(A1 , A2 , man.A) || k(B1 , B2 , man.B) || k(C1 , C2 , man.C) || k(D1 , D2 , man.D)) {
resultStr = "result" + (result.length + 1) + ":" + "A:" + man.A + ",B:" + man.B + ",C:" + man.C + ",D:" + man.D;
result.push(resultStr);
}
}
}
document.getElementById("result").innerHTML = result.join("<br>");
}
function p( a , b) {
return a == (b - 1)? 1 : 0
}
function q ( c , d ) {
return c != d ? 1 : 0;
}
function k( a , b , c) {
return (c == 1) && (a + b > 0);
}
function makeKN() {
var list = [];
var listResult = [];
for ( var i = 1 ; i < 5 ; i ++) {
for ( var j = 1 ; j < 5 ; j ++) {
for ( var p = 1 ; p < 5 ; p ++) {
for ( var q = 1 ; q < 5 ; q ++) {
if ( i != j && i != p && i != q
&& j != p && j != q
&& p != q ) {
list[0] = i;
list[1] = j;
list[2] = p;
list[3] = q;
listResult.push(list);
list = [];
}
}
}
}
}
return listResult;
}
3) 结果
result1:A:3,B:2,C:1,D:4
Author by : ╃小〥斌╄
URL : http://www.cnblogs.com/seagate_cn/archive/2007/08/31/876984.html
不足之处还请指教, 继续修改优化中。。。。
posted on 2007-08-31 11:26
╃小〥斌╄ 阅读(355)
评论(4) 编辑 收藏 所属分类:
JS专栏