某刑偵大隊對涉及6 個嫌疑人的一樁疑案進分析,得出初步結論:
1) A、B 至少有一人作案;
2) A、E、F 這3 人中至少有兩人參與作案;
3) A、D 不可能是同案犯;
4) B、C 或同時作案,或與本案無關;
5) C、D 中有且僅有1 人作案;
6) 如果D 沒有參與作案,則E 也不可能參與作案。
試程式設計,用列舉法透過邏輯分析找出作案人。
#include
void 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)
continue;
if((A==0&&E==0)||(A==0&&F==0)||(E==0&&F==0))
continue;
if(A==1&&D==1)
continue;
if((B==1&&C==0)||(B==0&&C==1))
continue;
if((C==1&&D==1)||(C==0&&D==0))
continue;
if(D==0&&E==1)
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(“\n”);
}
}
#include
void 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)
continue;
if((A==0&&E==0)||(A==0&&F==0)||(E==0&&F==0))
continue;
if(A==1&&D==1)
continue;
if(B+C==1)
continue;
if(C+D==0&&C+D==2)
continue;
if(D==0&&E==1)
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(“\n”);
}
}
兩個程式只是有兩行程式碼不一樣,但是第二個程式輸出是錯誤的
if(C+D==0&&C+D==2)&& 應該是 || 吧