找回密码
 欢迎注册
楼主: gxqcn

[分享] 试试你有多聪明——经典逻辑智力题50例

  [复制链接]
 楼主| 发表于 2008-8-31 13:03:39 | 显示全部楼层
第15题不是早就注明了“已由shshsh_0510在132#、mathe在134#、fmtgy在136#解答”吗? 不过,还是非常感谢你的参与。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-16 20:28:56 | 显示全部楼层

回复 171# zYr 的帖子

我在一本书上看到这到智力题的解题思路也是填写表格形式完成的, 比较直观,也易于推理,类似于有些人用Excel解“数独”问题。 另,我将表格略作编辑,去除了一些冗余标签。 不过,zYr 来论坛不久,帖子排版质量很高,赞一个。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-16 21:12:22 | 显示全部楼层
刚刚更新了一下主题帖, 现在仅仅差 No.36 无人解答了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-16 21:56:20 | 显示全部楼层
查了一遍,近期的没找到。 不知是不是老早就有人解答了?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-18 07:34:29 | 显示全部楼层
原帖由 zYr 于 2008-9-17 22:14 发表 这“经典逻辑智力题50例”都快做完了,能不能再出个几十例?
你可以试试由 shability 整理的《我整理的一些IQ题目合集》, 我记得里面并未完全解答。 还有 无心人 发的《数学奥林匹克升级题》,也非常有意思。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-18 19:56:01 | 显示全部楼层

回复 182# silitex 的帖子

刚才在 VC6.0 下编译出现了大量 error,就略作了下修改:
  1. /************
  2. * 关于爱因斯坦98%的人都回答不出来的粗浅程序, 鉴于网络上没有很好的C参考程序, \
  3. * 这里尝试写一个, 聊博一笑! *^_^*, 请在VC6.0或以上环境编译!
  4. * Email: silitex@yeah.net
  5. * 注: 如采用原始枚举: (5!)^5 = 24,883,200,000, 在普通的电脑需运行1分钟以上, \
  6. * 故做一个算法优化, 在枚举时, 把已知的2个条件: 牛奶 = 2, 挪威人 = 0, \
  7. * 直接确定; 这样算法的枚举次数为: (4!)^2*(5!)^3 = 995,328,000.
  8. * 用C++的标准做法应该把所有的内容封装成类, 否则太容易因为下表取错而出错!
  9. ***/
  10. #include <stdio.h>
  11. #include <math.h>
  12. #define N 5
  13. #define N_NAME 24 /* Name的枚举次数 */
  14. #define N_COLOR 120
  15. #define N_DRINK 24
  16. #define N_CIG 120
  17. #define N_PET 120
  18. enum E_NAME {ENGLISH, SWEDISH, DANE, NORWEGIAN, GERMAN};
  19. enum E_COLOR {RED, GREEN, WHITE, YELLOW, BLUE};
  20. enum E_DRINK {TEA, COFFEE, MILK, BEER, WATER};
  21. enum E_CIGARETTE {PALLMALL, DUNHILL, BLENDS, BLUEMASTER, PRINCE}; // Cigar类?
  22. enum E_PET {DOG, BIRD, CAT, HORSE, FISH};
  23. const char *NAME[] = {"英国人", "瑞典人", "丹麦人", "挪威人", "德国人"};// 人名
  24. const char *COLOR[] = {"红", "绿", "白", "黄", "蓝"}; // 颜色
  25. const char *DRINK[] = {"茶", "咖啡", "牛奶", "啤酒", "水"}; // 饮料
  26. const char *CIGARETTE[] = {"PallMal", "Dunhill", "混合烟", "BlueMas", \
  27. "Prince"}; // 香烟
  28. const char *PET[] = {"狗", "鸟", "猫", "马", "鱼"}; // 宠物
  29. extern const int ENUM_NAME[][N];
  30. extern const int ENUM_DRINK[][N];
  31. extern const int ENUM_ALL[][N];
  32. int main(void)
  33. {
  34. int tmp_name[N]; // 临时数组, 以上面的枚举变量为索引, 指示在第几栋房子
  35. int tmp_color[N];
  36. int tmp_drink[N];
  37. int tmp_cig[N];
  38. int tmp_pet[N];
  39. int out_name[N]; // 输出数组, 以第几栋房子为位置, 记录上面的枚举变量值
  40. int out_color[N];
  41. int out_drink[N];
  42. int out_cig[N];
  43. int out_pet[N];
  44. int i;
  45. long per;
  46. for (int n = 0; n < N_NAME; n++)
  47. {
  48. for (i = 0; i < N; i++)
  49. tmp_name[ENUM_NAME[n][i]] = i;
  50. for (int c = 0; c < N_COLOR; c++)
  51. {
  52. for (i = 0; i < N; i++)
  53. tmp_color[i] = ENUM_ALL[c][i];
  54. for (int d = 0; d < N_DRINK; d++)
  55. {
  56. for (i = 0; i < N; i++)
  57. tmp_drink[ENUM_DRINK[d][i]] = i;
  58. for (int c2 = 0; c2 < N_CIG; c2++)
  59. {
  60. for (i = 0; i < N; i++)
  61. tmp_cig[i] = ENUM_ALL[c2][i];
  62. for (int p = 0; p < N_PET; p++)
  63. {
  64. for (i = 0; i < N; i++)
  65. tmp_pet[i] = ENUM_ALL[p][i];
  66. /* 前面的就是枚举所有可能行, 下面的工作就根据条件判断\
  67. * 已知我们用掉了5个初始条件, 所以这里判断10个剩余条件.
  68. */
  69. if (tmp_name[ENGLISH] != tmp_color[RED])
  70. continue;
  71. if (tmp_name[SWEDISH] != tmp_pet[DOG])
  72. continue;
  73. if (tmp_name[DANE] != tmp_drink[TEA])
  74. continue;
  75. if (tmp_color[GREEN] != tmp_drink[COFFEE])
  76. continue;
  77. if (tmp_cig[PALLMALL] != tmp_pet[BIRD])
  78. continue;
  79. if (tmp_color[YELLOW] != tmp_cig[DUNHILL])
  80. continue;
  81. if (tmp_cig[BLUEMASTER] != tmp_drink[BEER])
  82. continue;
  83. if (tmp_name[GERMAN] != tmp_cig[PRINCE])
  84. continue;
  85. #if 1 // 绿在白的左边, 且必须为邻居
  86. if (tmp_color[GREEN]+1 != tmp_color[WHITE])
  87. continue;
  88. #else // 绿在白的左边, 不必为邻居
  89. if (tmp_color[GREEN] >= tmp_color[WHITE])
  90. continue;
  91. #endif
  92. if (abs(tmp_cig[BLENDS]-tmp_pet[CAT]) != 1)
  93. continue;
  94. if (abs(tmp_pet[HORSE]-tmp_cig[DUNHILL]) != 1)
  95. continue;
  96. if (abs(tmp_name[NORWEGIAN]-tmp_color[BLUE]) != 1)
  97. continue;
  98. #if 1 // 这个条件多余, 可以不用.
  99. if (abs(tmp_cig[BLENDS]-tmp_drink[WATER]) != 1)
  100. continue;
  101. #endif
  102. // 如果上面的条件都满足, 则显示出来
  103. for (i = 0; i < N; i++)
  104. {
  105. out_name[tmp_name[i]] = i;
  106. out_color[tmp_color[i]] = i;
  107. out_drink[tmp_drink[i]] = i;
  108. out_cig[tmp_cig[i]] = i;
  109. out_pet[tmp_pet[i]] = i;
  110. }
  111. printf("\nposi: 0 1 2 3 4");
  112. printf("\nname: %-7s %-7s %-7s %-7s %-7s\n", \
  113. NAME[out_name[0]], NAME[out_name[1]], \
  114. NAME[out_name[2]], NAME[out_name[3]], \
  115. NAME[out_name[4]]);
  116. printf("color: %-7s %-7s %-7s %-7s %-7s\n", \
  117. COLOR[out_color[0]], COLOR[out_color[1]], \
  118. COLOR[out_color[2]], COLOR[out_color[3]], \
  119. COLOR[out_color[4]]);
  120. printf("drink: %-7s %-7s %-7s %-7s %-7s\n", \
  121. DRINK[out_drink[0]], DRINK[out_drink[1]], \
  122. DRINK[out_drink[2]], DRINK[out_drink[3]], \
  123. DRINK[out_drink[4]]);
  124. printf("cig: %-7s %-7s %-7s %-7s %-7s\n", \
  125. CIGARETTE[out_cig[0]], CIGARETTE[out_cig[1]], \
  126. CIGARETTE[out_cig[2]], CIGARETTE[out_cig[3]], \
  127. CIGARETTE[out_cig[4]]);
  128. printf("pet: %-7s %-7s %-7s %-7s %-7s\n", \
  129. PET[out_pet[0]], PET[out_pet[1]], \
  130. PET[out_pet[2]], PET[out_pet[3]], \
  131. PET[out_pet[4]]);
  132. }
  133. }
  134. }
  135. // 显示当前的进度
  136. per = ((N_COLOR*(long)n)+(long)c+1)*100/(N_NAME*N_COLOR);
  137. printf("\rProgress: %02d%% ", per);
  138. }
  139. }
  140. return 0;
  141. }
  142. const int ENUM_NAME[][N] = {
  143. {NORWEGIAN, ENGLISH, SWEDISH, DANE , GERMAN },
  144. {NORWEGIAN, ENGLISH, SWEDISH, GERMAN , DANE },
  145. {NORWEGIAN, ENGLISH, DANE , SWEDISH, GERMAN },
  146. {NORWEGIAN, ENGLISH, DANE , GERMAN , SWEDISH},
  147. {NORWEGIAN, ENGLISH, GERMAN , SWEDISH, DANE },
  148. {NORWEGIAN, ENGLISH, GERMAN , DANE , SWEDISH},
  149. {NORWEGIAN, SWEDISH, ENGLISH, DANE , GERMAN },
  150. {NORWEGIAN, SWEDISH, ENGLISH, GERMAN , DANE },
  151. {NORWEGIAN, SWEDISH, DANE , ENGLISH, GERMAN },
  152. {NORWEGIAN, SWEDISH, DANE , GERMAN , ENGLISH},
  153. {NORWEGIAN, SWEDISH, GERMAN , ENGLISH, DANE },
  154. {NORWEGIAN, SWEDISH, GERMAN , DANE , ENGLISH},
  155. {NORWEGIAN, DANE , ENGLISH, SWEDISH, GERMAN },
  156. {NORWEGIAN, DANE , ENGLISH, GERMAN , SWEDISH},
  157. {NORWEGIAN, DANE , SWEDISH, ENGLISH, GERMAN },
  158. {NORWEGIAN, DANE , SWEDISH, GERMAN , ENGLISH},
  159. {NORWEGIAN, DANE , GERMAN , ENGLISH, SWEDISH},
  160. {NORWEGIAN, DANE , GERMAN , SWEDISH, ENGLISH},
  161. {NORWEGIAN, GERMAN , ENGLISH, SWEDISH, DANE },
  162. {NORWEGIAN, GERMAN , ENGLISH, DANE , SWEDISH},
  163. {NORWEGIAN, GERMAN , SWEDISH, ENGLISH, DANE },
  164. {NORWEGIAN, GERMAN , SWEDISH, DANE , ENGLISH},
  165. {NORWEGIAN, GERMAN , DANE , ENGLISH, SWEDISH},
  166. {NORWEGIAN, GERMAN , DANE , SWEDISH, ENGLISH},
  167. };
  168. const int ENUM_DRINK[][N] = {
  169. {TEA , COFFEE , MILK , BEER , WATER },
  170. {TEA , COFFEE , MILK , WATER , BEER },
  171. {TEA , BEER , MILK , COFFEE , WATER },
  172. {TEA , BEER , MILK , WATER , COFFEE },
  173. {TEA , WATER , MILK , COFFEE , BEER },
  174. {TEA , WATER , MILK , BEER , COFFEE },
  175. {COFFEE , TEA , MILK , BEER , WATER },
  176. {COFFEE , TEA , MILK , WATER , BEER },
  177. {COFFEE , BEER , MILK , TEA , WATER },
  178. {COFFEE , BEER , MILK , WATER , TEA },
  179. {COFFEE , WATER , MILK , TEA , BEER },
  180. {COFFEE , WATER , MILK , BEER , TEA },
  181. {BEER , TEA , MILK , COFFEE , WATER },
  182. {BEER , TEA , MILK , WATER , COFFEE },
  183. {BEER , COFFEE , MILK , TEA , WATER },
  184. {BEER , COFFEE , MILK , WATER , TEA },
  185. {BEER , WATER , MILK , TEA , COFFEE },
  186. {BEER , WATER , MILK , COFFEE , TEA },
  187. {WATER , TEA , MILK , COFFEE , BEER },
  188. {WATER , TEA , MILK , BEER , COFFEE },
  189. {WATER , COFFEE , MILK , TEA , BEER },
  190. {WATER , COFFEE , MILK , BEER , TEA },
  191. {WATER , BEER , MILK , TEA , COFFEE },
  192. {WATER , BEER , MILK , COFFEE , TEA },
  193. };
  194. const int ENUM_ALL[][N] = {
  195. {0,1,2,3,4}, {0,1,2,4,3}, {0,1,3,2,4}, {0,1,3,4,2}, {0,1,4,2,3},
  196. {0,1,4,3,2}, {0,2,1,3,4}, {0,2,1,4,3}, {0,2,3,1,4}, {0,2,3,4,1},
  197. {0,2,4,1,3}, {0,2,4,3,1}, {0,3,1,2,4}, {0,3,1,4,2}, {0,3,2,1,4},
  198. {0,3,2,4,1}, {0,3,4,1,2}, {0,3,4,2,1}, {0,4,1,2,3}, {0,4,1,3,2},
  199. {0,4,2,1,3}, {0,4,2,3,1}, {0,4,3,1,2}, {0,4,3,2,1}, {1,0,2,3,4},
  200. {1,0,2,4,3}, {1,0,3,2,4}, {1,0,3,4,2}, {1,0,4,2,3}, {1,0,4,3,2},
  201. {1,2,0,3,4}, {1,2,0,4,3}, {1,2,3,0,4}, {1,2,3,4,0}, {1,2,4,0,3},
  202. {1,2,4,3,0}, {1,3,0,2,4}, {1,3,0,4,2}, {1,3,2,0,4}, {1,3,2,4,0},
  203. {1,3,4,0,2}, {1,3,4,2,0}, {1,4,0,2,3}, {1,4,0,3,2}, {1,4,2,0,3},
  204. {1,4,2,3,0}, {1,4,3,0,2}, {1,4,3,2,0}, {2,0,1,3,4}, {2,0,1,4,3},
  205. {2,0,3,1,4}, {2,0,3,4,1}, {2,0,4,1,3}, {2,0,4,3,1}, {2,1,0,3,4},
  206. {2,1,0,4,3}, {2,1,3,0,4}, {2,1,3,4,0}, {2,1,4,0,3}, {2,1,4,3,0},
  207. {2,3,0,1,4}, {2,3,0,4,1}, {2,3,1,0,4}, {2,3,1,4,0}, {2,3,4,0,1},
  208. {2,3,4,1,0}, {2,4,0,1,3}, {2,4,0,3,1}, {2,4,1,0,3}, {2,4,1,3,0},
  209. {2,4,3,0,1}, {2,4,3,1,0}, {3,0,1,2,4}, {3,0,1,4,2}, {3,0,2,1,4},
  210. {3,0,2,4,1}, {3,0,4,1,2}, {3,0,4,2,1}, {3,1,0,2,4}, {3,1,0,4,2},
  211. {3,1,2,0,4}, {3,1,2,4,0}, {3,1,4,0,2}, {3,1,4,2,0}, {3,2,0,1,4},
  212. {3,2,0,4,1}, {3,2,1,0,4}, {3,2,1,4,0}, {3,2,4,0,1}, {3,2,4,1,0},
  213. {3,4,0,1,2}, {3,4,0,2,1}, {3,4,1,0,2}, {3,4,1,2,0}, {3,4,2,0,1},
  214. {3,4,2,1,0}, {4,0,1,2,3}, {4,0,1,3,2}, {4,0,2,1,3}, {4,0,2,3,1},
  215. {4,0,3,1,2}, {4,0,3,2,1}, {4,1,0,2,3}, {4,1,0,3,2}, {4,1,2,0,3},
  216. {4,1,2,3,0}, {4,1,3,0,2}, {4,1,3,2,0}, {4,2,0,1,3}, {4,2,0,3,1},
  217. {4,2,1,0,3}, {4,2,1,3,0}, {4,2,3,0,1}, {4,2,3,1,0}, {4,3,0,1,2},
  218. {4,3,0,2,1}, {4,3,1,0,2}, {4,3,1,2,0}, {4,3,2,0,1}, {4,3,2,1,0},
  219. };
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-19 08:37:24 | 显示全部楼层
估计主要是 include 的同名头文件的干扰吧。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-11-12 07:40:05 | 显示全部楼层
原帖由 疯猪 于 2008-11-12 05:28 发表 两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢? 其实把大圆间断后拉直就可以了 自转数是周长的比 是2周 内外都一样
错! 不信,你自己拿两个相同的硬币在桌子上模拟下, 绕固定硬币滚动一周的硬币,在此过程中自转了两周!(而不是一周)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-12-2 17:07:48 | 显示全部楼层
有没有详细解析啊 这样很难懂 jmyhyu 发表于 2009-12-2 16:58
参见图示:http://bbs.emath.ac.cn/viewthrea ... 8&fromuid=8#pid5717
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-7-15 04:58 , Processed in 0.048552 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表