三个人比饭量大小,每个人说了两句话。 A说:B比我吃得多,C和我吃得一样多。 B说:A比我吃得多,A也比C吃得多。 C说:我比B吃得多,B比A吃得多。 事实上饭量越小的人讲对的话越多。

三个人比饭量大小,每个人说了两句话。
A说:B比我吃得多,C和我吃得一样多。
B说:A比我吃得多,A也比C吃得多。
C说:我比B吃得多,B比A吃得多。
事实上饭量越小的人讲对的话越多。
请编程按饭量的大小输出3个人的顺序。

#include<iostream>
using namespace std;
int main() {
	//A至少错了一句话,因为根据题意,并不存在饭量相等的人
	int A, B, C;//用A,B,C的大小分别表示A,B,C的饭量,饭量从小到大依次为0,1,2
	int s1, s2, s3;//用s1,s2,s3表示A,B,C对的话有几句
	for (A = 1; A < 3; A++)//A要么饭量中等要么饭量最大
		for (B = 0; B < 3; B++)
			for (C = 0; C < 3; C++) {
				if ((A != B) && (B != C) && (C != A))//提升效率,保证A,B,C饭量不相等
				{
					s1 = 1; s2 = 2; s3 = 2;//这里默认初始A说对了一句话,B说对了两句话,C说对了两句话,如果碰到有下述情况即有人说了假话,就把他们说的真话数减一
					if (A > B)
					{
						s1--;
						s3--;
					}
					else
						s2--;
					if (C > A)
						s2--;
					if (C < B)
						s3--;
					if ((s1 + A == 2) && (s2 + B == 2) && (s3 + C == 2))
						if (A == 1) {
							if (B == 0)
								cout << "饭量从小到大依次为:BAC" << endl;
							else
								cout << "饭量从小到大依次为:CAB" << endl;

						}
						else {
							if (B==0)
								cout << "饭量从小到大依次为:BCA" << endl;
							else
								cout << "饭量从小到大依次为:CBA" << endl;
						}


								

				}
			}
			
	return 0;
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Grausam

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

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

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

打赏作者

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

抵扣说明:

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

余额充值