5位运动员参加了10米台跳水比赛,结果预测

问题描述:

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

思路:

根据题目,我们可先自行推算出比赛结果:
对A选手入手分析:假设B第二是真,则B选手说的E第四为假,故根据E选手所说A为第一为真,进而C选手所说D第二为真,即D选手所说C最后为真,这样推出的结果为:A第一,B第二,C第五,D第二,E不确定
以上推论的结果显然不正确,故可知A所说他第三为真;根据这一条件,推算出的结果为:
A第三,B第一,C第五,D第二,E第四

代码:

#include"day.h"

void game()
{
    int a=0;
    int b=0;
    int c=0;
    int d=0;
    int e=0;
    for(a=1;a<=5;a++)
    {
        for(b=1;b<=5;b++)
        {
            if(a!=b)
            {
                //排除并列情况,a和b不为同一排名
                for(c=1;c<=5;c++)
                {
                    if(a!=c && b!=c)
                    {
                        for(d=1;d<=5;d++)
                        {
                            if(a!=d && b!=d && c!=d)
                            {
                                for(e=1;e<=5;e++)
                                {
                                    if(a!=e && b!=e && c!=e && d!=e )
                                    {
                                        if(((b==2)+(a==3)==1)&&
                                           ((b==2)+(e==4)==1)&&
                                           ((c==1)+(d==2)==1)&&
                                           ((c==5)+(d==3)==1)&&
                                           ((e==4)+(a==1)==1))
                                        {
                                            printf("a:%d b:%d c:%d d:%d e:%d\n",a,b,c,d,e);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值