主题:[原创]一道有趣的题
chenxihaoyun
[专家分:0] 发布于 2011-01-02 10:07:00
有四个人,其中有一个人的了一百分;A说不是我,B说是C,C说是B,D说C胡说;这四个人中只有一个人说谎,用编程做,输出谁的了一百分?
回复列表 (共4个回复)
沙发
jdsbj [专家分:0] 发布于 2011-01-07 22:35:00
觉得这个问题用编程来解的话显得多此一举:只需分别假定A、B、C、D说谎了,看是否出现矛盾即可。用人脑来做的话很简单的,可用编程的话,很麻烦而且结果也不一定完美。
板凳
yuan067 [专家分:60] 发布于 2011-01-15 04:28:00
#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;
}
4 楼
zhang5382 [专家分:170] 发布于 2011-01-23 15:03:00
C得了100分,不用一分钟判断出来,有时人脑比电脑快很多,快在不用编程。
我来回复