我国有4大淡水湖。
A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
已知这4个湖的大小均不相等,4个人每人仅答对一个。
请编程解出四个湖从大到小的顺序。
#include<iostream>
#include<cstring>
using namespace std;
void swap(int* r, string* s, int i, int j) {
int t = r[i]; r[i] = r[j]; r[j] = t;
string m = s[i]; s[i] = s[j]; s[j] = m;
}
int main() {
string s[4];
s[0] = "洞庭湖";
s[1] = "洪泽湖";
s[2] = "鄱阳湖";
s[3] = "太湖";
int r[4] = { 0 };
int cc1, cc2, cc3, cc4, a, b, c, d;//cc1,cc2,cc3,cc4表示A,B,C,D说对了几句
//a,b,c,d表示洞庭湖,洪泽湖,鄱阳湖,太湖按大小排序,最大为1,最小为4
for (a = 1; a < 5; a++)
for (b = 1; b < 5; b++)
for (c = 1; c < 5; c++)
for (d = 1; d < 5; d++)
if (a * b * c * d == 24) {
cc1 = (a == 1) + (b == 4) + (c == 3);
cc2 = (b == 1) + (a == 4) + (c == 2) + (d == 3);
cc3 = (b == 4) + (a == 3);
cc4 = (c == 1) + (d == 4) + (b == 2) + (a == 3);
if ((cc1 && cc2 && cc3 && cc4) && (cc1 + cc2 + cc3 + cc4 == 4)) {
r[0] = a;
r[1] = b;
r[2] = c;
r[3] = d;
}
}
for (int i = 0; i < 3; i++)
for (int j = 3; j > 0; j--) {
if (r[j - 1] > r[j])
swap(r, s, j - 1, j);
}
for (int i = 0; i < 4; i++)
cout << s[i] << "第" << r[i] << "大" << endl;
return 0;
}