题目描述
某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
1)A和B两人中至少去一人;
2)A和D不能一起去;
3)A、E和F三人中要派两人去;
4)B和C都去或都不去;
5)C和D两人中去一个;
6)若D不去,则E也不去。
问应当让哪几个人去?
#include <iostream>
using namespace std;
int main()
{
int a[6] = { 0 };
int b, c, d, e, f, g = 0;
for (b = 0; b < 2; b++)
{
a[5] = b;
for (c = 0; c < 2; c++)
{
a[4] = c;
for (d = 0; d < 2; d++)
{
a[3] = d;
for (e = 0; e < 2; e++)
{
a[2] = e;
for (f = 0; f < 2; f++)
{
a[1] = f;
for (g = 0; g < 2; g++)
{
a[0] = g;
int flag = 0;
/*某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
1)A和B两人中至少去一人;
2)A和D不能一起去;
3)A、E和F三人中要派两人去;
4)B和C都去或都不去;
5)C和D两人中去一个;
6)若D不去,则E也不去。
问应当让哪几个人去?*/
//0到5分别表示A B C D E F
if (a[0] == 1 || a[1] == 1)
{
flag++;
}
if (a[0] == 1 && a[3] == 1)
{
//
}
else
flag++;
if ((a[0] == 1 && a[4] == 1 || a[0] == 1 && a[5] == 1 || a[4] == 1 && a[5] == 1) && !(a[0] == 1 && a[4] == 1 && a[5] == 1))
{
flag++;
}
if (a[1] == 1 && a[2] == 1 || a[1] == 0 && a[2] == 0)
{
flag++;
}
if (a[2] == 1 && a[3] == 0 || a[2] == 0 && a[3] == 1)
{
flag++;
}
if (a[3] == 0)
{
if (a[4] == 0)
{
flag++;
}
}
else
flag++;
if (flag == 6)
{
for (int i = 0; i < 6; i++)
{
if (a[i] == 1)
{
if (i == 0)
cout << "A,";
}
if (a[i] == 1)
{
if (i == 1)
cout << "B,";
}
if (a[i] == 1)
{
if (i == 2)
cout << "C,";
}
if (a[i] == 1)
{
if (i == 3)
cout << "D,";
}
if (a[i] == 1)
{
if (i == 4)
cout << "E,";
}
if (a[i] == 1)
{
if (i == 5)
cout << "F,";
}
}
}
}
}
}
}
}
}
system("pause");
return 0;
}