赞
踩
某侦察队接到一项紧急任务,要求在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也不去。
问应当让哪几个人去?
*问题分析与算法设计
用A、B、C、D、E、F六个变量表示六个人是否去执行任务的状态,变量的值为1,则表示该人去;变量的值为0,则表示该人不参加执行任务,根据题意可写出表达式:
a+b>1 A和B两人中至少去一人;
a+d!=2 A和D不能一起去;
a+e+f2 A、E、F三人中要派两人去;
b+c0或b+c2 B和C都去或都不去;
c+d1 C和D两人中去一个;
d+e0或d1 若D不去,则E也不去(都不去;或D去E随便)。
上述各表达式之间的关系为“与”关系。穷举每个人去或不去的各种可能情况,代入上述表达式中进行推理运算,使上述表达式均为“真”的情况就是正确的结果。
#include<iostream> using namespace std; int main() { int a, b, c, d, e, f; 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 + b >= 1) && (a + d == 1) && (a + e + f == 2) && (c + d == 1) && (b + c != 1) && (d + e == 0 || d == 1)) { if (a == 1) { cout << "a" << endl; } if (b == 1) { cout << "b" << endl; } if (c == 1) { cout << "c" << endl; } if (d == 1) { cout << "d" << endl; } if (e == 1) { cout << "e" << endl; } if (f == 1) { cout << "f" << endl; } } } } } } } } return 0; }
下面是运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。