C语言训练-委派任务

题目描述

某侦察队接到一项紧急任务,要求在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;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值