一道很难的题,高分求解?

powerfox 2001-09-17 07:02:17
已知A,B,C,D四人为偷盗嫌疑人,其中只有一人为偷盗者。在审讯中,四人诚实
或说谎都有可能。
A :B没偷,D偷的。
B :我没偷,C偷的。
C :A没偷,B偷的。
D :我没偷。
请编程判断实际的偷盗者。
(提示: 先将四人说的话用符号表示,例如A的话可分解为:B没偷并且D偷的,
或者 B偷的并且D没偷,表示为 ~BΛDVBΛ~D。将A,B,C,D对应一个字节
的位,从而数字化。)
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arter 2001-09-17
  • 打赏
  • 举报
回复
用Lisp就好办多了!
along_zju 2001-09-17
  • 打赏
  • 举报
回复
#include "stdio.h"

int mask[4][2]={
{2,4},
{2,3},
{1,2},
{4,0}};

int main()
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=0;j<4;j++)
if (!( ((mask[j][1] == i || !mask[j][1]) && mask[j][0] != i) || (mask[j][0] == i && (mask[j][1] != i || !mask[j][1]))))
break;
if (j < 4)
break;
}
printf("%c\n",i+'A');
}
along_zju 2001-09-17
  • 打赏
  • 举报
回复
哦,忘了处理0的情况了,呵呵...
along_zju 2001-09-17
  • 打赏
  • 举报
回复
穷举嘛,反正就4种情况,
#include "stdio.h"

int mask[4][2]={
{2,4},
{2,3},
{1,2},
{4,0}};

int main()
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=0;j<4;j++)
if (!( (mask[j][1] == i && mask[j][0] != i) || (mask[j][0] == i && mask[j][1] != i)))
break;
if (j < 4)
break;
}
printf("%c\n",i+'A');
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧