7.2某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:
A、B 至少有一人作案; A、E、F 三人中至少有两人参与作案; A、D 不可能是同案犯; B、C 或同时作案,或与本案无关; C、D 中有且仅有一人作案; 如果 D 没有参与作案,则 E 也不可能参与作案。 试编一程序,将作案人找出来。
我先申明,这一题的思路是我借鉴别人的,不是我自己弄的
#include<stdio.h>
int main()
{
int A,B,C,D,E,F; //每个罪犯只有01两种情况,1是罪犯0清白
for(A=0;A<2;A++)//A
{
for(B=0;B<2;B++) //B
{
for(C=0;C<2;C++) //C
{
for(D=0;D<2;D++) //D
{
for(D=0;D<2;D++) //D
{
for(E=0;E<2;E++) //E
{
for(E=0;E<2;E++) //E
{
for(F=0;F<2;F++) //F
{
if( (A +B > 0 ) /*AB至少一人作案*/&& (A+E+F >1) /*AEF至少两人作案*/&& (A+D == 1) /*AD不可能是同案犯*/&& (B+C != 1) /*BC或同案 或与本案无关*/&& (C+D == 1 ) /*CD只有一人作案*/&& (!(!D && E)) ) /*如果D没有参与作案,则E也不可能参与作案*/
{
printf("A:%s", A==1?"作案\n":"非作案\n" );
printf("B:%s", B==1?"作案\n":"非作案\n" );
printf("C:%s", C==1?"作案\n":"非作案\n" );
printf("D:%s", D==1?"作案\n":"非作案\n" );
printf("E:%s", E==1?"作案\n":"非作案\n" );
printf("F:%s", F==1?"作案\n":"非作案\n" );
break; //如果不止一个解,就不需要这个break
}
}
}
}
}
}
}
}
}
return 0;
}
//输出:
A:作案
B:作案
C:作案
D:非作案
E:非作案
F:作案