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;
    }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Whitebury/article/details/89044098