c语言逻辑推理

5.*某刑侦大队对涉及6个嫌疑人的一桩疑案进分析,得出初步结论:1)A、B至少有一人作案;2)A、E、F这3人中至少有两人参与作案;3)A、D不可能是同案犯;4)B、C或... 5. *某刑侦大队对涉及6 个嫌疑人的一桩疑案进分析,得出初步结论:
1) A、B 至少有一人作案;
2) A、E、F 这3 人中至少有两人参与作案;
3) A、D 不可能是同案犯;
4) B、C 或同时作案,或与本案无关;
5) C、D 中有且仅有1 人作案;
6) 如果D 没有参与作案,则E 也不可能参与作案。
试编程,用枚举法通过逻辑分析找出作案人。
我想问一下,你们的思路是如何。
怎么想出来的?
展开
 我来答
高金山
2008-11-27 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1656万
展开全部
#include<stdio.h>
int main()
{
int A,B,C,D,E,F;//0没作案,1作案

for(A=0;A<2;A++)
for(B=0;B<2;B++)
for(C=0;C<2;C++)
for(D=0;D<2;D++)
for(E=0;E<2;E++)
for(F=0;F<2;F++)
{
if(A==0 && B==0)
{//1) A、B 都没作案;
continue;
}
if((A==0 && E==0)||(A==0 && F==0)||(E==0 && F==0))
{//2) 最多才1人作案
continue;
}
if(A==1 && D==1)
{//3) A、D 是同案犯;
continue;
}
if((B==1 && C==0)||(B==0 && C==1))
{//4) B、C 中有1人作案;
continue;
}
if((C==1 && D==1)||(C==0 && D==0))
{//5) C、D 或同时作案,或与本案无关;
continue;
}
if(D==0 && E==1)
{//6)D 没有参与作案,E却参与了。
continue;
}
printf("作案的人员有:");
if(A)printf("A, ");
if(B)printf("B, ");
if(C)printf("C, ");
if(D)printf("D, ");
if(E)printf("E, ");
if(F)printf("F, ");
printf("\b\n");
}
}

输出:
作案的人员有:A, B, C, F
CX3201
2008-11-27 · TA获得超过157个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:0
展开全部
for(A=0;A<=1;A++)
for(B=0;B<=1;B++)
for(C=0;C<=1;A++)
for(D=0;D<=1;B++)
for(E=0;E<=1;A++)
for(F=0;F<=1;B++)
if((A||B)&&(!A||!B||!C)&&((A&&!C)||(!A&&C))&&((B&&C)||(!B&&!C))&&((C&&!D)||(D&&!C))&&(!D&&!E))
打印作案人...

做法就是
1 每条条件之间是与关系
2 把每条条件转化为逻辑表达式
3 用与连起来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式