哪款赛车最佳?

哪款赛车最佳?

Description
四名专家对四款赛车进行评论。
专家A说:a号赛车是最好的。
专家B说:b号赛车是最好的。
专家C说:c号不是最佳赛车。
专家D说:专家B说错了。
事实上只有一款赛车最佳,且只有一名专家说对了,其他三人都说错了。请编程输出最佳车的编号,以及哪位专家所对了。

Input
多组测试数据,对于每组测试数据,第 1 行输入3个正整数,表示a、b 、c的编号,编号x范围(1 <= x <= 4),且编号互不相同。

Output
对于每组测试数据,输出正整数x和字符ch,表示最佳车的编号以及说对的专家的编号,详细格式请参考样例。

Sample
Input
2 4 3
Output
3 D
对于“只有一款赛车最佳,且只有一名专家说对了”
1)如果只有A是正确的,可知B在说谎,C与D却都是正确的
2)如果只有B是正确的,可知A和D在说谎,C却是正确的
3)如果只有C是正确的,可推到A,B不是最好的,则D没有说谎,不符合
4)如果只有D是正确的,可推到B不是最好的,同时A说谎和C说谎,即C为最好的赛车,此推导成立。

#include<stdio.h>
int main()
{
    int a,b,c;
   while(scanf("%d %d %d",&a,&b,&c)!=EOF)
   {
       printf("%d D\n",c);
   }
}

离谱的老师非要遍历,明明那么麻烦,就很离谱

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int ch[5],exp[5],num,t;//ch[]为四辆车是否为最好车,ch[最好的车]=1,否则为0
    //exp[]表示专家说的话是否正确,正确为1,否则为0
    int a,b,c,d;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF)
    {
        d=10-a-b-c;//编号有范围,四个数加起来=10
        for(int i=1; i<5; i++)
            ch[i]=0;//初始化
        for(ch[a]=0; ch[a]<=1; ch[a]++)
            for(ch[b]=0; ch[b]<=1; ch[b]++)
                for(ch[c]=0; ch[c]<=1; ch[c]++)
                    for(ch[d]=0; ch[d]<=1; ch[d]++)
                    {
                        //遍历四辆车,与四个专家所说的话看是否符合
                        for(int i=1; i<5; i++)
                            exp[i]=0;//初始化
                        if(ch[a]==1)
                            exp[1]=1;//如果a车最好,证明第一个专家是正确的
                        if(ch[b]==1)
                            exp[2]=1;//如果b车最好,证明第二个专家是正确的
                        if(ch[c]==0)
                            exp[3]=1;//如果c车不是最好,证明第三个专家是正确的
                        if(ch[b]==0)
                            exp[4]=1;//如果b车不是最好,证明第四个专家是正确的
                        for(int i=1; i<=4; i++)
                        {
                            if(ch[i]==1)
                                num=i;
                            if(exp[i]==1)
                                t=i;
                        }//记录最好的车和正确的专家
                        if(exp[1]+exp[2]+exp[3]+exp[4]==1&&ch[a]+ch[b]+ch[d]+ch[c]==1)
                        {
                            //保证只有一个专家是正确的,和只有一辆车最好
                            printf("%d %c\n",num,'A'+t-1);
                        }
                    }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pig2687

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值