回 帖 发 新 帖 刷新版面

主题:[原创]一道有趣的题

有四个人,其中有一个人的了一百分;A说不是我,B说是C,C说是B,D说C胡说;这四个人中只有一个人说谎,用编程做,输出谁的了一百分?

回复列表 (共4个回复)

沙发

觉得这个问题用编程来解的话显得多此一举:只需分别假定A、B、C、D说谎了,看是否出现矛盾即可。用人脑来做的话很简单的,可用编程的话,很麻烦而且结果也不一定完美。

板凳

#include <stdio.h>
#include <conio.h>
int a,b,c,d,k,s[3];
int main()
{
    for (s[0]=1;s[0]>=0;s[0]--)
        for (s[1]=1;s[1]>=0;s[1]--)
            for (s[2]=1;s[2]>=0;s[2]--)
                for (s[3]=1;s[3]>=0;s[3]--)
                    if (s[0]+s[1]+s[2]+s[3]==1)
                    {
                        a=((s[0]==0)&&(s[1]==1||s[2]==1||s[3]==1));
                        b=(s[2]==1);
                        c=(s[1]==1);
                        d=((s[1]==0)&&(s[0]==1||s[2]==1||s[3]==1));
                        if (a+b+c+d==3) 
                        {
                            for (k=0;k<4;k++)
                                if (s[k]==1) printf("%c",k+65);
                        }
                    }
    getch();
    return 0;
}

3 楼

哈哈哈,用人脑比电脑快多了。但这题值得思考一下

4 楼

C得了100分,不用一分钟判断出来,有时人脑比电脑快很多,快在不用编程。

我来回复

您尚未登录,请登录后再回复。点此登录或注册