// 由于判断的条件不是那么多,用了穷举的方法
/*
A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
*/
#include < iostream >
using namespace std;
bool judge( int a, int b, int c, int d, int e);
void show( int a, int b, int c, int d, int e);
int main()
{
int a , b, c, d, e;
for (int va = 0; va < 2; ++va)
{
a = va;
for (int vb = 0; vb < 2; ++vb)
{
b = vb;
for (int vc = 0; vc < 2; ++vc)
{
c = vc;
for (int vd = 0; vd < 2; ++vd)
{
d = vd;
for(int ve = 0; ve < 2; ++ve)
{
e = ve;
if (judge(a, b, c, d, e))
goto END;
}
}
}
}
}
END:
show(a, b, c, d, e);
system("pause");
return 0;
}
bool judge( int a, int b, int c, int d, int e)
{
if (a == 1 && b == 0) // A参加时,B也参加
return false;
if ( (b == 1 && c == 1) || (b == 0 && c == 0)) // B和C只有一个人参加
return false;
if ( (c == 1 && d == 0) || (c == 0 && d == 1) ) // C和D或者都参加,或者都不参加
return false;
if (d == 0 && e == 0) // D和E中至少有一个人参加
return false;
// 如果E参加,那么A和D也都参加
if (e == 1 && ((a == 0 && d == 1) || (a == 1 && d == 0) || (a == 0 && d == 0)))
return false;
return true;
}
void show( int a, int b, int c, int d, int e)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
cout << "d = " << d << endl;
cout << "e = " << e << endl;
}
A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
*/
#include < iostream >
using namespace std;
bool judge( int a, int b, int c, int d, int e);
void show( int a, int b, int c, int d, int e);
int main()
{
int a , b, c, d, e;
for (int va = 0; va < 2; ++va)
{
a = va;
for (int vb = 0; vb < 2; ++vb)
{
b = vb;
for (int vc = 0; vc < 2; ++vc)
{
c = vc;
for (int vd = 0; vd < 2; ++vd)
{
d = vd;
for(int ve = 0; ve < 2; ++ve)
{
e = ve;
if (judge(a, b, c, d, e))
goto END;
}
}
}
}
}
END:
show(a, b, c, d, e);
system("pause");
return 0;
}
bool judge( int a, int b, int c, int d, int e)
{
if (a == 1 && b == 0) // A参加时,B也参加
return false;
if ( (b == 1 && c == 1) || (b == 0 && c == 0)) // B和C只有一个人参加
return false;
if ( (c == 1 && d == 0) || (c == 0 && d == 1) ) // C和D或者都参加,或者都不参加
return false;
if (d == 0 && e == 0) // D和E中至少有一个人参加
return false;
// 如果E参加,那么A和D也都参加
if (e == 1 && ((a == 0 && d == 1) || (a == 1 && d == 0) || (a == 0 && d == 0)))
return false;
return true;
}
void show( int a, int b, int c, int d, int e)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
cout << "d = " << d << endl;
cout << "e = " << e << endl;
}