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 也不可能参与作案。
试编程,用枚举法通过逻辑分析找出作案人。
我想问一下,你们的思路是如何。
怎么想出来的? 展开
1) A、B 至少有一人作案;
2) A、E、F 这3 人中至少有两人参与作案;
3) A、D 不可能是同案犯;
4) B、C 或同时作案,或与本案无关;
5) C、D 中有且仅有1 人作案;
6) 如果D 没有参与作案,则E 也不可能参与作案。
试编程,用枚举法通过逻辑分析找出作案人。
我想问一下,你们的思路是如何。
怎么想出来的? 展开
2个回答
展开全部
#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
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
展开全部
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 用与连起来
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 用与连起来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询