思路:
根据题意可知A、B、C、D四个人只有1个做了好事,则有以下4种状态:(做好事的为1,其他的为0)
状态1:A == 1 B == 0 C == 0 D == 0
状态2:A == 0 B == 1 C == 0 D == 0
状态3:A == 0 B == 0 C == 1 D == 0
状态4:A == 0 B == 0 C == 0 D == 1
所谓枚举,就是按照这4种状态的假定,去逐一的去测试4个人中有几句真话
若有3句则该状态成立,其他则该状态不成立
#include <iostream>
using namespace std;
int main()
{
for(int a = 0; a <= 1; a++)
{
for(int b = 0; b <= 1; b++)
{
for(int c = 0; c <= 1; c++)
{
for(int d = 0; d <= 1; d++)
{
if(a + b + c + d == 1) // 限定做好事的人的个数
{
int cc1 = (a == 0);
int cc2 = (c == 1);
int cc3 = (d == 1);
int cc4 = (d == 0);
if(cc1 + cc2 + cc3 + cc4 == 3)
{
cout << "A" << (a == 1 ? "做了" : "没做") << "好事" << endl;
cout << "B" << (b == 1 ? "做了" : "没做") << "好事" << endl;
cout << "C" << (c == 1 ? "做了" : "没做") << "好事" << endl;
cout << "D" << (d == 1 ? "做了" : "没做") << "好事" << endl;
}
}
}
}
}
}
return 0;
}