44 12345
发新话题
打印

有兴趣的玩一下:谁是凶手。写个程序来解答。

本主题由 七月十五 于 2008-7-26 12:20 设置高亮

有兴趣的玩一下:谁是凶手。写个程序来解答。

某地发生了一起谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯中的一个。以下为4个嫌疑犯的供词。
    A说:不是我。
    B说:是C。
    C说:是D。
    D说:C在胡说。
已知3个人说了真话,1个人说的是假话。请根据这些信息,写一个程序来确定到底谁是凶手。

看看大家的基本功。
转眼间,9年过去了。

TOP

蛮经典的一道题
转眼间,9年过去了。
复制PHP内容到剪贴板
PHP代码:
$men['a'] = false;
$men['b'] = false;
$men['c'] = false;
$men['d'] = false;
foreach (
$men as $man=>$iskiller)
{
    
$men[$man] = true;
    if (
== (int)!$men['a'] + (int) $men['c'] +  (int) $men['d'] + (int) ! $men['d']){
        echo 
'killer is '$man;
        break;
    }
   
$men[$man] = false;
}


[ 本帖最后由 sentrychen 于 2008-7-23 10:30 编辑 ]

TOP

引用:
原帖由 sentrychen 于 2008-7-23 10:28 发表

$men['a'] = false;
$men['b'] = false;
$men['c'] = false;
$men['d'] = false;
foreach ($men as $man=>$iskiller)
{
    $men[$man] = true;
    if (3 == (int)!$men['a'] + (int) $men['c'] +  (int)  ...
思路是对的,不错。
不过写的不够简洁,也不够直观。
转眼间,9年过去了。

TOP

错了 。。在改

[ 本帖最后由 CrossMaya 于 2008-7-23 11:20 编辑 ]
php【程式】
group110484@xiaoi.com
期待高手加入!
复制PHP内容到剪贴板
PHP代码:
function findKiller($note){
    foreach(
$note as $men=>$says){
        
$num countTF($men$note);
        if(
$num['t']==&& $num['f']==1){
            return 
$men;
        }
    }
}
function 
countTF($tempKiller$note){
    
$t $f 0;
    foreach(
$note as $men=>$says){
        
in_array($tempKiller$says)?$t++:$f++;
    }
    return array(
't'=>$t,'f'=>$f);
}

$note = array(
    
'a'=>array('b','c','d'),
    
'b'=>array('c'),
    
'c'=>array('d'),
    
'd'=>array('a','b','c')
);
echo 
"恭喜 ".findKiller($note).", 你中了大奖!";

[ 本帖最后由 roger 于 2008-7-23 11:30 编辑 ]

TOP

C和D肯定有一个人在说假话,既然有3个人在说真话,那肯定有一个人在说假话,那必是C和D中的,那B说的肯定是真话,那就是C是坏蛋喽!  对吗?
我突然发现自己就会个 echo "abc";
引用:
原帖由 roger 于 2008-7-23 11:28 发表

function findKiller($note){
    foreach($note as $men=>$says){
        $num = countTF($men, $note);
        if($num['t']==3 && $num['f']==1){
            return $men;
        }
    }
}
funct ...
比第一个朋友写的还复杂。。。
转眼间,9年过去了。

TOP

复制PHP内容到剪贴板
PHP代码:

<?php
print "C";
?>

最简单的写法 ...
我是一只小小象~~ 咿呀咿呀哟~~~~

TOP

 44 12345
发新话题