5位运动员参加了10米台跳水比赛,对他们的预测进行排序
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请确定比赛的名次
把a,b,c,d,e从1遍历到5,因为他们每人都说对了一半,所以每个人所说的两句话的逻辑异或为1。为了不让他们出现相同的名次,如果他们的名次相乘为120,那么就输出每个人的名次
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void Sport(int a, int b, int c, int d, int e) {
for (a = 1; a <= 5; ++a) {
for (b = 1; b <= 5; ++b) {
for (c = 1; c <= 5; ++c) {
for (d = 1; d <= 5; ++d) {
for (e = 1; e <= 5; ++e) {
if ((((a == 3) ^ (b == 2)) == 1) &&
(((b == 2) ^ (e == 4)) == 1) &&
(((c == 1) ^ (d == 2)) == 1) &&
(((d == 3) ^ (c == 5)) == 1) &&
(((e == 4) ^ (a == 1)) == 1)) {
if (a*b*c*d*e == 120) {
printf("a是第%d ", a);
printf("b是第%d ", b);
printf("c是第%d ", c);
printf("d是第%d ", d);
printf("e是第%d\n", e);
}
}
}
}
}
}
}
}
int main() {
int a = 0, b = 0, c = 0, d = 0, e = 0;
Sport(a, b, c, d, e);
system("pause");
return 0;
}