四人有一人为打工人,每个人说话不知正否。话分别如下:乙不是,丁是;乙不是,丙是;甲不是,乙是;丁不是。如题所问。
分别设甲乙丙丁为a,b,c,d。1为是打工人,0不是。
甲:((!b&&d)==1||(b&&!d)==1) 乙:((!b&&c)==1||(b&&!c)==1)
丙:((!a&&b)==1||(a&&!b)==1) 丁:(d==0!!d==1) 计:a+b+c+d=1
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
for(a=0;a<2;a++)
{
for(d=0;d<2;d++)
{
for(b=0;b<2;b++)
{
for(c=0;c<2;c++)
{
if(a+b+c+d==1&&((!b&&d)==1||(b&&!d)==1)&&((!b&&c)==1||(b&&!c)==1)&&((!a&&b)==1||(a&&!b)==1)&&(d==0||d==1))
{
if(a==1)printf("First is a worker\n");
if(b==1)printf("Second is a worker\n");
if(c==1)printf("Third is a worker\n");
if(d==1)printf("Fourth is a worker\n");
}
}
}
}
}
return 0;
}