夏日炎炎,空调机走俏。5家空调机厂的产品在一次质量评比活动中分获前5名。评比前大家就已知E的产品肯定不是第2名和第3名。

夏日炎炎,空调机走俏。5家空调机厂的产品在一次质量评比活动中分获前5名。评比前大家就已知E的产品肯定不是第2名和第3名。
A的代表猜测:E的产品一定获第1名。
B的代表猜测:我可能获第2名。
C的代表猜测:A的质量最差。
D的代表猜测:C的产品不是最好的。
E的代表猜测:D厂会获第1名。
评比结果公布以后发现,只有获第1名和第2名的两个厂的代表猜对了。
请编程给出A,B,C,D,E各是第几名?
思路:
如果E是第一名,那E说的就是对的,则D也是第一名,矛盾
所以E只能是第四或者第五,即E说的是错的
那么A也是错的……
我们还可以建立一个索引数组。
第一名是a[1]……第五名是a[5]
用1,2,3,4,5分别表示abcde
即a[1]=5表示第一名是e(打个比方)

#include<iostream>
using namespace std;
int main() {
	bool cc[6];
	int a[6] = { 0 };
	for (a[1] = 1; a[1] < 6; a[1]++)
		for (a[2] = 1; a[2] < 6; a[2]++)
			for (a[3] = 1; a[3] < 6; a[3]++)
				for (a[4] = 1; a[4] < 6; a[4]++)
					for (a[5] = 1; a[5] < 6; a[5]++)
						if ((a[1] * a[2] * a[3] * a[4] * a[5] == 120)&&(a[2]!=5)&&(a[3]!=5)) {
							cc[1] = (a[1] == 5);
							cc[2] = (a[2] == 2);
							cc[3] = (a[5] == 1);
							cc[4] = (a[1] != 3);
							cc[5] = (a[1] == 4);
							if ((cc[a[1]]) && (cc[a[2]]) && (!cc[a[3]]) && (!cc[a[4]]) && (!cc[a[5]])) {
								for (int i = 1; i < 6; i++)
									cout << (char)(a[i] + 'A' - 1) << "荣获第" << i << "名"<<endl;
							}
								
						}
	return 0;

}

输出如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Grausam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值