三个人比饭量大小,每个人说了两句话。
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;
}