- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
思路:生成每个选手的所有名次可能性,然后进行逻辑判断.
每个选手都只说对一半,则说明每个选手的话都可以拆成两个判断,其中只有一句为真,将五位选手的话语判断出来后的结果相加会等于5,那么得到的情况就是五位选手都只说半句真话后得到的所有名次情况,然后再筛选掉不重复的情况即可
代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Function(){
for (int a = 0; a <= 5; a++){
for (int b = 0; b<= 5; b++){
for (int c = 0; c <= 5; c++){
for (int d = 0;d <= 5; d++){
for (int e = 0; e <= 5; e++){
if ((a == 3) + (b == 2) ==1