五人跳水比赛算法设计

这篇博客探讨了一个有趣的逻辑问题——五位跳水运动员的比赛排名预测。每个运动员都给出了关于其他人的排名的两个陈述,但每个陈述只有一半是真的。通过编程,我们遍历所有可能的排名组合,最终找到唯一符合所有条件的排名结果。这个过程展示了逻辑推理与编程解决问题的巧妙结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

五位跳水运动员 参加比赛 预测他们的比赛排名


A选手说: B第二,我第三
B选手说: 我第二,E第四
C选手说: 我第一,D第二
D选手说: C最后, 我第三
E选手说: 我第四,A第一

每位选手都说对一半,编程确定比赛名次 。

A: B=2,A=3

B: B=2,E=4

C: C=1,D=2

D: C=5,D=3

E: E=4, A=1

条件为真是1,条件为假是0。

对每位选手的话进行判断,当五位选手同时满足条件时打印出比赛名次.

根据名次是1到5 设定循环条件起始值为1,结束值为=5

5层for循环让abcde的值从1到5走一遍 然后每次都判断条件

就相当于把所有结果都列出来 根据条件 找出正确的结果

代码如下:

int main() 
{
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    //名次从1到5 循环也从1开始 加到5之后停止
    for (int a = 1; a <= 5; a++)
    {
        for (int b = 1; b <= 5; b++) 
        {
            for (int c = 1; c <= 5; c++) 
            {
                for (int d = 1; d <= 5; d++) 
                {
                    for (int e = 1; e <= 5; e++) 
                    {

//若刚好满足五位选手的条件的值 就是所求的比赛排名

//A满足且B满足且C满足且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)
                            )
                        {

//由于满足的值 不止一种 而且很多重复的 再进行下一次筛选 
                            if(a*b*c*d*e==120)//若满足abcde分别是第一名第二名...第五名在打印
                           printf("a是第%d名 b是第%d名 c是第%d名 d是第%d名 e是第%d名", a, b, c, d, e);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值