您的位置:首页 > 其它

任务:委派任务

2012-11-05 11:22 176 查看
/*  
* Copyright (c) 2012, 烟台大学计算机学院  
* All rights reserved.  
* 作    者:解晓东   
* 完成日期:2012 年 11 月 5 日  
* 版 本 号:v1.0  
*  
* 输入描述:                     
* 问题描述:委派任务:某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
*                     A和B两人中至少去一人;
*                     A和D不能一起去;
*                     A、E和F三人中要派两人去;
*                     B和C都去或都不去;
*                     C和D两人中去一个;
*                     若D不去,则E也不去。
*          问应当让哪几个人去?
*         提示:  用a、b、c、d、e、f六个变量表示六个人是否去执行任务的状态,变量的值为1,则表示该人去;变量的值为0,则表示
*           该人不参加执行任务,根据题意可写出表达式:
*                             a+b>1   	//A和B两人中至少去一人;
*                              a+d!=2    	//A和D不能一起去;
*                              a+e+f==2   	// A、E、F三人中要派两人去;
*                              b+c==0或b+c==2   	// B和C都去或都不去;
*                              c+d==1    	//C和D两人中去一个;
*                              d+e==0或d==1     	//若D不去,则E也不去(都不去;或D去E随便)。
*              上述各表达式之间的关系为“与”关系。穷举每个人去或不去的各种可能情况,代入上述表达式中进行推理运算,使上述表达式均
*           为“真”的情况就是正确的结果。                         
* 程序输出:                         
* 问题分析: 
* 算法设计:  
*/  

# include <iostream>

using namespace std;

int main()
{
	int a, b, c, d, e, f;
	int count = 0;

	for(a = 0; a <= 1; ++a)
	{
		for(b = 0; b <= 1; ++b)
		{
			for(c = 0; c <= 1; ++c)
			{
				for(d = 0; d <= 1; ++d)
				{
					for(e = 0; e <= 1; ++e)
					{
						for(f = 0; f <= 1; ++f)
						{
							if((a + b > 0) && (a + d != 2) && (a + e + f == 2) && ((b + c == 0) || (b + c ==2)) && (c + d == 1) && ((d + e == 0) || (d == 1)))
							{
								++count;
								
								cout << "第"
									 << count
									 << "种:"
									 << endl;
								
								if(a)
									cout << "a ";
								
								if(b)
									cout << "b ";
								
								if(c)
									cout << "c ";
								
								if(d)
									cout << "d ";
								
								if(e)
									cout << "e ";
								
								if(f)
									cout << "f ";
								
								cout << endl;
							}
						}
					}
				}
			}
		}
	}

	return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: