编程题#2:四大湖
注意: 总时间限制: 1000ms 内存限制: 65536kB
描述
我国有4大淡水湖。
A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
已知这4个湖的大小均不相等,4个人每人仅答对一个,
请编程按照鄱阳湖、洞庭湖、太湖、洪泽湖的顺序给出他们的大小排名。
输入
无。
输出
输出为4行,第1行为鄱阳湖的大小名次,从大到小名次分别表示为1、2、3、4;第2、3、4行分别为洞庭湖、太湖、洪泽湖的大小名次。
样例输入
样例输出
这题非常简单,重要的是解题的逻辑。
代码:
//编程题#2:四大湖
//逻辑:列举出所有可能性,并满足条件1:4个湖的大小均不相等;
//条件2:4个人每人仅答对一个
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
a = b = c = d = 0;
for (int a = 1; a <= 4; a++) //鄱阳湖可能的排名
{
for (int b = 1; b <= 4; b++) //洞庭湖可能的排名
{
for (int c = 1;c <= 4; c++) //太湖可能的排名
{
for (int d= 1; d <= 4; d++) //洪泽湖可能的排名
{
//条件1:4个湖的大小均不相等
if ((a!=b && a!=c && a!=d && b!=c && b!=d && c!=d)
//条件2:4个人每人仅答对一个
&& ((b==1)+(d==4)+(a==3)==1 )
&& ((d==1)+(b==4)+(a==2)+(c==3)==1)
&& ((d==4)+(b==3)==1)
&& ((a==1)+(c==4)+(d==2)+(b==3)==1)
)
{
cout << a << endl << b << endl << c << endl << d << endl;
}
}
}
}
}
return 0;
}