`
mixer_b
  • 浏览: 115107 次
社区版块
存档分类
最新评论

程序员有趣的面试智力题3

阅读更多

  17、一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?
      答案:你可以把两个相机放在圆盘上相近的两点,然后观察哪个点先变色。事实上,只需要一个相机就够了。控制相机绕圆盘中心顺时针移动,观察颜色多久变一次;然后让相机以相同的速度逆时针绕着圆盘中心移动,再次观察变色的频率。可以断定,变色频率较慢的那一次,相机的转动方向是和圆盘相同的。

     18、有25匹马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢。问最少赛几场可以找出25匹马中速度最快的前3名?百度2008年面试题

每匹马都至少要有一次参赛的机会,所以25匹马分成5组,一开始的这5场比赛是免不了的。接下来要找冠军也很容易,每一组的冠军在一起赛一场就行了(第6场)。最后就是要找第2和第3名。我们按照第6场比赛中得到的名次依次把它们在前5场比赛中所在的组命名为A、B、C、D、E。即:A组的冠军是第6场的第1名,B组的冠军是第6场的第2名……每一组的5匹马按照他们已经赛出的成绩从快到慢编号:

A组:1,23,4,5
B组:12,3,4,5
C组:1,2,3,4,5
D组:1,2,3,4,5
E组:1,2,3,4,5

从现在所得到的信息,我们可以知道哪些马已经被排除在3名以外。只要已经能确定有3匹或3匹以上的马比这匹马快,那么它就已经被淘汰了。可以看到,只有上表中粗体的那5匹马是有可能为2、3名的。即:A组的2、3名;B组的1、2名,C组的第1名。取这5匹马进行第7场比赛,第7场比赛的前两名就是25匹马中的2、3名。故一共最少要赛7场。

这道题有一些变体,比如64匹马找前4名。方法是一样的,在得出第1名以后寻找后3名的候选竞争者就可以了。

      19、题目如下:
  0 1 2 3 4 5 6 7 8 9
  _ _ _ _ _ _ _ _ _ _

在横线上填写数字,使之符合要求。
要求如下:对应的数字下填入的数,代表上面的数在下面出现的次数,比如3下面是1,代表3要在下面出现一次。

正确答案是:0 1 2 3 4 5 6 7 8 9
                       6 2 1 0 0 0 1 0 0 0

我的思路是:因为第二行的数字是第一行的数在下面出现的次数,下面10个格子,总共10次。。。所以第2排数字之和为10。

首先从0入手,先填9,肯定不可能,9下面要是1,只剩8个位填0,不够填8,8下面要填1,1要至少填2,后面不用再想,因为已经剩下7个位置,不够填0……如此类推。到0下面填6的时候就得到我上面的答案了。。

其实可以推出这个题目的两个关键条件:
1、第2排数字之和为10。
2、两排数字上下相乘之和也是10!
满足这两个条件的就是答案,下面来编写程序实现!

  1. //原始数值: 0,1,2,3,4,5,6,7,8,9  
  2. //出现次数: 6,2,1,0,0,0,1,0,0,0  
  3. #include "iostream"  
  4. using namespace std;  
  5. #define len 10  
  6. class NumberTB  
  7. {  
  8. private:  
  9.     int top[len];  
  10.     int bottom[len];  
  11.     bool success;  
  12. public:  
  13.     NumberTB();  
  14.     int *getBottom();  
  15.     void setNextBottom();  
  16.     int getFrequecy(int num);  
  17. };  
  18. NumberTB::NumberTB()  
  19. {  
  20.     success = false;  
  21.     //format top  
  22.     for(int i = 0; i < len; i++)  
  23.     {  
  24.         top[i] = i;  
  25.     }  
  26. }  
  27. int *NumberTB::getBottom()  
  28. {  
  29.     int i = 0;  
  30.     while(!success)  
  31.     {  
  32.         i++;  
  33.         setNextBottom();  
  34.     }  
  35.     return bottom;  
  36. }  
  37. //set next bottom  
  38. void NumberTB::setNextBottom()  
  39. {  
  40.     bool reB = true;  
  41.     for(int i = 0; i < len; i++)  
  42.     {  
  43.         int frequecy = getFrequecy(i);  
  44.         if(bottom[i] != frequecy)  
  45.         {  
  46.             bottom[i] = frequecy;  
  47.             reB = false;  
  48.         }  
  49.     }  
  50.     success = reB;  
  51. }  
  52. //get frequency in bottom  
  53. int NumberTB::getFrequecy(int num) //此处的num 即指上排的数i  
  54. {  
  55.     int count = 0;  
  56.     for(int i = 0; i < len; i++)  
  57.     {  
  58.         if(bottom[i] == num)  
  59.             count++;  
  60.     }  
  61.     return count; //cout 即对应frequecy  
  62. }  
  63. int main(void)  
  64. {  
  65.     int i;  
  66.     NumberTB nTB;  
  67.     int *result = nTB.getBottom();  
  68.     cout<<"原始数值:";  
  69.     for(i=0;i<10;i++)  
  70.         cout<<i<<"  ";  
  71.     cout<<endl;  
  72.     cout<<"出现次数:";  
  73.     for(i = 0; i < len; i++)  
  74.     {  
  75.         cout << *result++ <<"  ";  
  76.     }  
  77.     cout<<endl;  
  78.     system("pause");  
  79.     return 0;  
  80. }  

 

分享到:
评论

相关推荐

    程序员 面试智力 题

    这些题目是程序员面试中常见的智力题,旨在考察应聘者的逻辑思维、问题解决能力和创新思维。以下是对这些题目涉及的知识点的详细分析: 1. **烧绳计时**:这是一个经典的逻辑题,要求在没有标准时间工具的情况下...

    NET程序员面试智力题

    .NET程序员面试智力题通常涉及到计算机科学基础、编程逻辑、算法分析、.NET框架理解以及问题解决能力等多个方面。以下是对这些知识点的详细说明: 1. 计算机科学基础:面试时,面试官可能会考察候选人的计算机基础...

    程序员有趣的面试智力题.pdf,这是一份不错的文件

    "程序员有趣的面试智力题" 这份文件提供了十一道有趣的面试智力题,并提供了解答。这些题目涵盖了算法、数学、逻辑和思维能力等方面。 1. 游戏策略问题:游戏者轮流放置硬币,先行者可以确保获胜的策略是什么? ...

    java程序员高难度智力题(面试用)

    java程序员高难度智力题,面试用! 值得学习。

    程序员面试智力题总结

    3. **抽象思考**:面试中的智力题常常需要你从具体的问题中抽离出来,看到问题的本质。例如,设计一个系统来处理特定问题,或者构建一个模型来解决实际的工程难题。这种能力在软件设计和架构中至关重要。 4. **问题...

    2018年java-程序员面试宝典+题库

    2018java程序员面试宝典+题库,很全。压缩的文档,打开是PDF版

    程序员面试智力题目大全

    程序员面试智力题目大全,很全的啦,希望大家做出一百道哦

    C程序员语言面试100题.ppt

    总结来说,C程序员语言面试中的100题不仅考察应聘者对C语言基础知识的掌握程度,更通过编程练习来考察应聘者的实际应用能力和问题解决能力。掌握这些知识点对于面试成功至关重要,也是程序员日常工作中不可或缺的...

    java程序员早期面试题汇总.zip

    java程序员早期面试题汇总 BAT经典面试题汇总.pdf Java常考面试题.pdf java面试题(题库全).doc java面试题-外企软件工程师面试题大全.rar 程序员面试题精选100题.pdf ... --------------------------------...

    程序员智力题

    程序员智力题

    程序员求职面试英语宝典

    《程序员求职面试英语宝典》是一本专门为程序员准备的面试英语指南,旨在帮助程序员在英语面试中提升自己的表现。此书涵盖了与编程、软件开发、项目管理、技术趋势等相关领域的专业词汇,以及面试中可能遇到的常见...

    C程序员语言面试100经典题

    程序员C程序员语言面试100经典题

    Java程序员就业面试题大全

    Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全

    .net程序员面试题

    收集了很多师兄师姐出去就业后,收集回来的企业面试.net程序员的面试题啊!不容易啊!1-8份面试题,好好看啊!都是技术题,祝面试上自己喜欢的职业

    java面试题 程序员面试 逻辑题 笔试题

    java面试题 程序员面试 逻辑题 笔试题

    java程序员面试交流项目经验

    java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...

    程序员面试整理打包分享之程序员面试part2

    75道逻辑思考题 500强企业面试智力 java 程序员面试题经典集锦 程序员面试逻辑思维题 逻辑思维题训练 附答案 由数十家知名IT企业综合题 外企面试必备 逻辑题 程序员面试(Java Net 阿里等名企) 一共只收2分 因为...

    程序员求职面试宝典(面试真题、技巧及职业规划)

    《程序员求职面试宝典》是一本专为程序员设计的求职指南,它涵盖了面试真题、技巧以及职业规划等核心内容,旨在帮助程序员在求职过程中更好地准备,提升成功几率。这本宝典可能包括了多种编程语言(如Java、Python、...

    程序员面试整理打包分享之程序员面试part1

    75道逻辑思考题 500强企业面试智力 java 程序员面试题经典集锦 程序员面试逻辑思维题 逻辑思维题训练 附答案 由数十家知名IT企业综合题 外企面试必备 逻辑题 程序员面试(Java Net 阿里等名企) 一共只收2分 因为...

    程序员面试题精选100题

    《程序员面试题精选100题》是一份针对程序员面试准备的重要资料,它包含了100个具有代表性的面试问题及详细的解答。这份文档旨在帮助求职者熟悉面试流程,掌握核心技能,提升通过面试的成功率。以下是部分精选知识点...

Global site tag (gtag.js) - Google Analytics