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

程序员有趣的面试智力题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. 计算机科学基础:面试时,面试官可能会考察候选人的计算机基础...

    75道程序员面试逻辑测试题内含答案.pdf,这是一份不错的文件

    程序员面试逻辑测试题内含答案.pdf 这是一份不错的文件,包含了75道程序员面试逻辑测试题,内含答案。该文件对应的标签为面试、文档资料、职场和发展、文档。 在这份文件中,我们可以找到许多有趣的逻辑测试题,...

    程序员有趣的面试智力题.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程序员的面试过程中,掌握核心的编程概念、设计模式、多线程、集合框架、异常处理、IO流、网络编程、数据库操作等是至关重要的。以下是对这些关键知识点的详细解析: 1. **基础语法**:理解并能熟练运用Java...

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

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

    Java程序员就业面试题大全

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

    .net程序员面试题

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics