爱因斯坦的智力题

wzq6511 2007-07-10 03:38:55
爱因斯坦出了一道题,他说世界上有90%的人回答不出,看看你是否属于10%。

  内容:
  1. 有5栋5种颜色的房子
  2. 每一位房子的主人国籍都不同
  3. 这五个人每人只喝一个牌子的饮料,只抽一个牌子的香烟,只养一种宠物
  4. 没有人有相同的宠物,抽相同牌子的烟,喝相同牌子的饮料
  已知条件:
  1. 英国人住在红房子里
  2. 瑞典人养了一条狗
  3. 丹麦人喝茶
  4. 绿房子在白房子的左边
  5. 绿房子主人喝咖啡
  6. 抽PALL MALL 烟的人养了一只鸟
  7. 黄房子主人抽DUNHILL烟
  8. 住在中间房子的人喝牛奶
  9. 挪威人住在第一间房子
  10. 抽混合烟的人住在养猫人的旁边
  11. 养马人住在抽DUNHILL烟人的旁边
  12. 抽BLUE MASTER烟的人喝啤酒
  13. 德国人抽PRINCE烟
  14. 挪威人住在蓝房子旁边
  15. 抽混合烟的人的邻居喝矿泉水
  问题:谁养鱼?

偶花了20分钟终于做出来了。
...全文
2468 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
cupidvenus 2007-08-10
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <conio.h>

typedef enum {nBritish, nSweden, nDenmark, nNorway, nGermany} Nationality;
typedef enum {hcRed, hcGreen, hcWhite, hcYellow, hcBlue} HouseColor;
typedef enum {bTea, bCoffee, bMilk, bBeer, bWater} Beverage;
typedef enum {cPALLMALL, cDUNHILL, cBLUEMASTER, cPRINCE, cMIX} Cigarettes;
typedef enum {pDog, pBird, pCat, pHorse, pFish} Pets;

#define MAX_METHOD 120 // 5!

int main(int argc, char *argv)
{
int Method[MAX_METHOD][5];
int i;
int i0,i1,i2,i3,i4;
int (*Nat), (*Col), (*Bev), (*Cig), (*Pet);
int GreenPos, WhitePos;

i = 0;
for (i0 = 0; i0 < 5; ++i0)
{
for (i1 = 0; i1 < 5; ++i1)
{
if (i1 == i0) continue;
for (i2 = 0; i2 < 5; ++i2)
{
if ((i2 == i0) || (i2 == i1)) continue;
for (i3 = 0; i3 < 5; ++i3)
{
if ((i3 == i0) || (i3 == i1) || (i3 == i2)) continue;
for (i4 = 0; i4 < 5; ++i4)
{
if ((i4 == i0) || (i4 == i1) || (i4 == i2) || (i4 == i3)) continue;
Method[i][0] = i0;
Method[i][1] = i1;
Method[i][2] = i2;
Method[i][3] = i3;
Method[i][4] = i4;
++i;
}
}
}
}
}

for (Nat = Method[0], i0 = MAX_METHOD; i0 > 0; Nat += 5, --i0)
{
// Condition 9
if ((Nationality)(Nat[0]) != nNorway) continue;

for (Col = Method[0], i1 = MAX_METHOD; i1 > 0; Col += 5, --i1)
{
for (Bev = Method[0], i2 = MAX_METHOD; i2 > 0; Bev += 5, -- i2)
{
// Condition 8
if ((Beverage)(Bev[2]) != bMilk) continue;

for (Cig = Method[0], i3 = MAX_METHOD; i3 > 0; Cig += 5, --i3)
{
for (Pet = Method[0], i4 = MAX_METHOD; i4 > 0; Pet += 5, --i4)
{
GreenPos = 5;
WhitePos = 5;
for (i = 0; i < 5; ++i)
{
// Condition 1
if (((Nationality)(Nat[i]) == nBritish) && ((HouseColor)(Col[i]) != hcRed)) break;
if (((HouseColor)(Col[i]) == hcRed) && ((Nationality)(Nat[i]) != nBritish)) break;

// Condition 2
if (((Nationality)(Nat[i]) == nSweden) && ((Pets)(Pet[i]) != pDog)) break;
if (((Pets)(Pet[i]) == pDog) && ((Nationality)(Nat[i]) != nSweden)) break;

// Condition 3
if (((Nationality)(Nat[i]) == nDenmark) && ((Beverage)(Bev[i]) != bTea)) break;
if (((Beverage)(Bev[i]) == bTea) && ((Nationality)(Nat[i]) != nDenmark)) break;

// Condition 4
if ((HouseColor)(Col[i]) == hcGreen) GreenPos = i;
if ((HouseColor)(Col[i]) == hcWhite) WhitePos = i;
if (GreenPos > WhitePos) break;

// Condition 5
if (((HouseColor)(Col[i]) == hcGreen) && ((Beverage)(Bev[i]) != bCoffee)) break;
if (((Beverage)(Bev[i]) == bCoffee) && ((HouseColor)(Col[i]) != hcGreen)) break;

// Condition 6
if (((Cigarettes)(Cig[i]) == cPALLMALL) && ((Pets)(Pet[i]) != pBird)) break;
if (((Pets)(Pet[i]) == pBird) && ((Cigarettes)(Cig[i]) != cPALLMALL)) break;

// Condition 7
if (((HouseColor)(Col[i]) == hcYellow) && ((Cigarettes)(Cig[i]) != cDUNHILL)) break;
if (((Cigarettes)(Cig[i]) == cDUNHILL) && ((HouseColor)(Col[i]) != hcYellow)) break;

// Condition 10
if (((Cigarettes)(Cig[i]) == cMIX) && (!(((i - 1 >= 0) && ((Pets)(Pet[i - 1]) == pCat)) || ((i + 1 < 5) && ((Pets)(Pet[i + 1]) == pCat))))) break;

// Condition 11
if (((Pets)(Pet[i]) == pHorse) && (!(((i - 1 >= 0) && ((Cigarettes)(Cig[i - 1]) == cDUNHILL)) || ((i + 1 < 5) && ((Cigarettes)(Cig[i + 1]) == cDUNHILL))))) break;

// Condition 12
if (((Cigarettes)(Cig[i]) == cBLUEMASTER) && ((Beverage)(Bev[i]) != bBeer)) break;
if (((Beverage)(Bev[i]) == bBeer) && ((Cigarettes)(Cig[i]) != cBLUEMASTER)) break;

// Condition 13
if (((Nationality)(Nat[i]) == nGermany) && ((Cigarettes)(Cig[i]) != cPRINCE)) break;
if (((Cigarettes)(Cig[i]) == cPRINCE) && ((Nationality)(Nat[i]) != nGermany)) break;

// Condition 14
if (((Nationality)(Nat[i]) == nNorway) && (!(((i - 1 >= 0) && ((HouseColor)(Col[i - 1]) == hcBlue)) || ((i + 1 < 5) && ((HouseColor)(Col[i + 1]) == hcBlue))))) break;

// Condition 15
if (((Cigarettes)(Cig[i]) == cMIX) && (!(((i - 1 >= 0) && ((Beverage)(Bev[i - 1]) == bWater)) || ((i + 1 < 5) && ((Beverage)(Bev[i + 1]) == bWater))))) break;
}
if (i == 5)
{
printf("%d %d %d %d %d\n", Nat[0], Nat[1], Nat[2], Nat[3], Nat[4]);
printf("%d %d %d %d %d\n", Col[0], Col[1], Col[2], Col[3], Col[4]);
printf("%d %d %d %d %d\n", Bev[0], Bev[1], Bev[2], Bev[3], Bev[4]);
printf("%d %d %d %d %d\n", Cig[0], Cig[1], Cig[2], Cig[3], Cig[4]);
printf("%d %d %d %d %d\n\n", Pet[0], Pet[1], Pet[2], Pet[3], Pet[4]);
}
}
}
}
}
}

return 0;
}

答案:
3 2 0 4 1
3 4 0 1 2
4 0 2 1 3
1 4 0 3 2
2 3 1 4 0

3 4 0 2 1
1 4 0 3 2
1 4 2 0 3
0 3 4 1 2
1 2 3 4 0

3 4 0 2 1
1 4 0 3 2
1 4 2 0 3
0 3 4 1 2
1 4 3 2 0

3 4 1 0 2
1 4 2 0 3
1 4 2 3 0
0 3 4 2 1
1 2 0 3 4

3 4 1 0 2
1 4 3 0 2
1 4 2 3 0
4 3 1 2 0
4 2 0 3 1

3 4 1 2 0
1 4 2 3 0
1 4 2 0 3
0 3 4 1 2
1 2 0 4 3

3 4 1 2 0
1 4 2 3 0
1 4 2 0 3
0 3 4 1 2
1 4 0 2 3
shinaterry 2007-07-13
  • 打赏
  • 举报
回复
闷闷...
the_AK47 2007-07-13
  • 打赏
  • 举报
回复
爱因斯坦出了一道题,他说世界上有90%的人回答不出,看看你是否属于10%.

这真是爱因斯坦说得吗????

对于一个正常的人,给他纸和笔肯定能做出来。会玩数独的人会做得更快。
问题是的关键不是思维的能力,而只是思维方式和推理方法。
lottery1821 2007-07-12
  • 打赏
  • 举报
回复
我也做了半个多小时,做出来了
thinker87 2007-07-12
  • 打赏
  • 举报
回复
德国人养鱼 还用程序编出来不成?????不是吧!!!逻辑推理出来也行吧!!!
wzq6511 2007-07-12
  • 打赏
  • 举报
回复
那个用Excel做的很强
autumnlj 2007-07-12
  • 打赏
  • 举报
回复
为什么德国人一定养鱼?可以养其他的啊,比如说大猩猩什么的
夏至夕陽 2007-07-12
  • 打赏
  • 举报
回复
也没说这里有养鱼的啊
zhu_jiang 2007-07-12
  • 打赏
  • 举报
回复
第一间房:挪威人/DUNHILL/矿泉水/黄房子/猫
第二间房:丹麦人/混合烟/茶/蓝房子/马
第三间房:英国人/PALL MALL/牛奶/红房子/鸟
第四间房:德国人/PRINCE/咖啡/绿房子/鱼
第五间房:瑞典人/BLUE MASTER/啤酒/白房子/狗
AhJo 2007-07-11
  • 打赏
  • 举报
回复

连题目都整成英文的了
智利题热潮再掀新高……


还是要支持一下前面各位高手
wzq6511 2007-07-11
  • 打赏
  • 举报
回复
tss1011() 不错,你也是属于10%的
lixinfa2000 2007-07-11
  • 打赏
  • 举报
回复
俺也做出来
花了大概半小时
绿色+咖啡+德国+prince
tss1011 2007-07-11
  • 打赏
  • 举报
回复
挪威 丹麦 英国 德国 瑞典
---------------------------------
黄 蓝 红 绿 白
---------------------------------
矿泉水 茶 牛奶 咖啡 啤酒
---------------------------------
dun 混和 pall pri blue
---------------------------------
猫 马 鸟 鱼 狗

哈哈哈 楼主帮看看 和正确答案一样不:) 刚算算 挺有意思的 顶!~!
None465465535 2007-07-11
  • 打赏
  • 举报
回复
7月的<程序员>上
butwang 2007-07-11
  • 打赏
  • 举报
回复
不会是爱因斯坦的,据说爱因斯坦连pai都没必要记,哪来兴趣写这玩意
studyljg 2007-07-11
  • 打赏
  • 举报
回复
顶!!好好学下
O15013245O 2007-07-11
  • 打赏
  • 举报
回复
mark
jc8futao 2007-07-11
  • 打赏
  • 举报
回复
这个问题时上一期程序员上面的题目
wzq6511 2007-07-11
  • 打赏
  • 举报
回复
那个英文的题目谁翻译下
outh24 2007-07-11
  • 打赏
  • 举报
回复
见过无数次的题目
已经不想再做第n+1次了。
加载更多回复(29)
数据分析方法培训 数据分析方法培训全文共40页,当前为第1页。 目录 数据分析前的思考 案例分享 深层次数据分析 数据分析方法培训全文共40页,当前为第2页。 数据分析前,我们需要思考 3 > 《孙子兵法〃谋攻篇》:故上兵伐谋,其次伐交,其次伐兵, 其下攻城;攻城之法为不得已。 像一场战役的总指挥影响着整个战役的胜败一样,数据分析 师的思想对于整体分析思路,甚至分析结果都有着关键性的 作用。 数据分析方法培训全文共40页,当前为第3页。 问题 分析结 果呈现 分析思 路与方 法 数据选取 数据分析前,我们怎么去思考? 每一个步骤可能面临的问题以及需要准备的东西??? 4 > 数据分析方法培训全文共40页,当前为第4页。 选取的分析 软件以及分 析方法(统 计学相关方 法)。 分析问题和解决问题的思路 5 > 定义问题 第一步 首先,要搞清 问题的实质, 准确、完整、 真实地表达问 题。 其次,弄清楚 为什么要解决 这个问题? 最后,解决这 个问题的意义 何在?是必须 解决还是无关 紧要,或是需 要马上解决还 是不太着急。 第二步 收集整理 信息 搜集、整理 关于要解决 问题的历史 资料、类似 情况和现状。 第三步 选取分析 方法 分析涉及到 的主要维度, 为后面提取 数据需求作 准备; 第四步 数据提取 整理 根据分析内 容以及分析 方法,提出 分析所需的 数据需求; 对于反馈回 来的数据, 需要进行部 分加工,以 便更能反应 所要分析的 问题。 第五步 分析结果 及结论 根据分析的 结果,得出 一些当前问 题产生的一 些结论。这 里注意分析 的方法以及 维度,结果 的展示方式 等。 结论需要求 足够的数据 做支撑。 第六步 实施及建 议措施 针对数据分 析结论,给 出当前问题 的解决建议 措施。 一方面从业 务层面进行 建议措施, 另一方面, 可以就问题 点进行更深 层次分析, 给出数据挖 掘层面的解 决措施。 第七步 实施效果评 估及报告整理 根据措施实 施效果进行 实际评估, 将完成的分 析过程,结 果以及评估 整理报告, 为以后出现 问题提供经 验教训。 对于本次没 有完全解决 的问题,进 行说明。 例如,从现 有的报表数 据中就能够 看到当前问 题点的数据 情况或者一 段时间的趋 势; 两个重点步骤 数据分析方法培训全文共40页,当前为第5页。 精确的陈述问题 Where----哪里存在问题? What------存在的问题是什么? Why-------原因在哪里? When-----什么时候开始出现这样的问题? Who------与什么对象有关? How many-----发生的次数和数量? How much------损失有多大? 爱因斯坦说:"精确的陈述问题比解決问题还来得重要" 5W2H法: 5W:What,When,Where,Who,Why; 2H:How及How many; 使用这 个方法 阿根廷队世界杯 输球了,如果你 是马拉多纳,你 怎么去思考? 定义问题 收集整理 信息 选取分析 方法 数据提取 整理 分析结果 及结论 实施及建 议措施 实施效果评 估及报告整理 数据分析方法培训全文共40页,当前为第6页。 问题展现方式 问题现状 直接原因 最终原因 问题的结构如同这座冰山 初步的问题分析 深层次的问题分析 问题结构是由现状、直接原因以及最终原因构成的。针对直接原因进行的叫初步 问题分析,针对最终原因进行分析的叫深层次问题分析。 7 > 治标 治本 定义问题 收集整理 信息 选取分析 方法 数据提取 整理 分析结果 及结论 实施及建 议措施 实施效果评 估及报告整理 数据分析方法培训全文共40页,当前为第7页。 问题分解 8 > 问题陈述 问题/假设1 问题/假设2 问题/假设3 分支问题 分支问题 分支问题 分支问题 分支问题 分支问题 为什么使用逻辑树? 1.将问题分成几个部分使 解决问题的工作可以分成智力上能够解 决的几个部分 不同部分可按轻重缓急区分 工作责任能分派到各人 2.保证问题获得完整地解决 将问题的各个部分解决好,即可解决整 个问题 所分问题的各个部分各不相同,而且包 括了各个方面(即没有重叠没有遗漏) 3.使项目小组共同了解解决问题的框架 4.协助重点使用组织框架及理论 定义问题 收集整理 信息 选取分析 方法 数据提取 整理 分析结果 及结论 实施及建 议措施 实施效果评 估及报告整理 数据分析方法培训全文共40页,当前为第8页。 分析方法 统计方法的三大特性,用三句话来简单概括一下: 反应客观现象 的数据 描述性统计 (包括统计数据的收 集、整理、显示和分 析) 实用性:除了实情,数据能证明一切; 丰富性:统计就像比基尼,露出来的部分固然诱人,没露出来的部分才是最要命 的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧