您的位置:首页 > 编程语言

(百例编程)52.黑与白

2012-06-02 22:08 232 查看
题目:有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到其它人额头上的纸的颜色。五人相互观察后,

A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。”

B说:“我看见其它四人额头上帖的都是黑纸。”

C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”

D说:“我看见四人额头上帖的都是白纸。”

E什么也没说。

现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。问这五人谁的额头是帖白纸,谁的额头是帖黑纸?

/*题目:有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。
五人对坐,每人都可以看到其它人额头上的纸的颜色。五人相互观察后,
A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。”
B说:“我看见其它四人额头上帖的都是黑纸。”
C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”
D说:“我看见四人额头上帖的都是白纸。”
E什么也没说。
现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。
问这五人谁的额头是帖白纸,谁的额头是帖黑纸?
*/
//by as1138 2011-04-15

#include <iostream>
using namespace std;

int main(void)
{
int a,b,c,d,e;
for(a=1;a>=0;--a)
for(b=1;b>=0;--b)
for(c=1;c>=0;--c)
for(d=1;d>=0;--d)
for(e=1;e>=0;--e)
if (((a&&b+c+d+e==3)||(!a&&b+c+d+e!=3))&&
((b&&a+c+d+e==0)||(!b&&a+c+d+e!=0))&&
((c&&a+b+d+e==1)||(!c&&a+b+d+e!=1))&&
((d&&a+b+c+e==4)||(!d&&a+b+c+e!=4))
)
{
if(a)
cout<<"A贴的是白纸!"<<endl;
else
cout<<"A贴的是黑纸!"<<endl;

if(b)
cout<<"B贴的是白纸!"<<endl;
else
cout<<"B贴的是黑纸!"<<endl;

if(c)
cout<<"C贴的是白纸!"<<endl;
else
cout<<"C贴的是黑纸!"<<endl;

if(d)
cout<<"D贴的是白纸!"<<endl;
else
cout<<"D贴的是黑纸!"<<endl;

if(e)
cout<<"E贴的是白纸!"<<endl;
else
cout<<"E贴的是黑纸!"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: