zoukankan      html  css  js  c++  java
  • 有意思的笔试题记录与分析

      昨天参加了某公司的笔试,总的来说题目很简单。但是还是有几个个题目是很有意思的,拿来和大家分享下!

     1、小周带着他的鸵鸟穿越1000公里的沙漠,运送3000颗白菜。已知鸵鸟一次性可驼1000颗白菜,但每走1公里又要吃掉1棵白菜,问:小周最终可以运多少颗白菜?

    分析:记得以前算法设计书上有个类似的油车过沙漠的问题,当时这问题是用倒推法来解决的,因为它有个结题突破口:油车以最少的耗油量穿过沙漠。本题同是过沙漠问题,但是却没有像油车过沙漠的解题突破口,怎么办呢?我们先想一个极限:让小周直接带着1000颗白菜头也不回的走到终点,这样刚好在途中吃完了所有白菜。此时起点还堆着2000棵白菜!所以我们只能折中:也就是每次出发都是带1000棵白菜,但是还要想着再次开始新的旅程时,最开始的起点是没有白菜的。具体做法:一共3000颗,所以大致可以将全程分为3个阶段。

    第一阶段:每次只能运1000,所以要从起点出发走3次(一遍运完所有白菜,吃掉的归吃掉总不至于像上面说的完事之后起点还有2000颗,但是再也回不去了!),减去最后一次出发无需返回的1次也就是第一阶段来回5次。那么每一回就吃掉1000/5=200颗,所以第一阶段要走200公里。与此同时白菜的余量=3000-200*5=2000;

    第二阶段:余下2000颗,所以要从第一阶段的终点出发走2次,减去最后一次无需返回的1次也就是第二阶段来回3次,那么每一回吃掉1000/3=333颗,所以第二阶段要走333公里,剩余白菜2000-333*3=1001颗。

    第三阶段:当然一路奔向成功了!要走的路程1000-200-333=467公里,用第二阶段的白菜余量1001-467就是最后到达终点时的白菜余量即为534颗。

    多谢园友一蚁行xDLMUCAI付的提醒,其实到第三阶段的时候已经出来答案了,这是个选择题只是我没给选项罢了!我又斟酌了一下:在第二阶段1000/3我做了粗略处理。应该剩余1000/3颗,剩余白菜1000颗。那么第三阶段就是1000-200-1000/3=466.7公里(约等于466公里,每走1公里吃1颗所以不足1公里就舍去),最终:1000-466=534颗。最后提醒大家本文所述均只代表个人观点,如有错误或有更好的解决办法,欢迎大家拍砖~

    2、用一根绳子去测量海沟的深度,发现绳子放到2000米因自身重力断掉了。若把相同材质的绳子半径加粗到一杯,能放到多少米?

    分析:我们知道m=p*v,既然材质相同则p相同,v=π r² h,h不变时v扩大到原来的4倍。我们再来从微观看,上边的拉力之所以能和下边的拉力达到平衡,是因为绳子传递了这个拉力,绳子之所以能传递这个拉力是因为其分子之间有引力,当绳子之间分子的引力不足以传递这个拉力时,绳子的分子引力被拉力破坏,就像拉开吸引在一起的磁铁一样,绳子宏观表现被拉断。所以我们只需分析单位横截面上的拉力即可,虽然绳子加粗会导致绳子的重力变为原来的4倍,但是同时横截面积液扩大为原来的4倍,多以作用在单位横截面上的拉力不变。所以还是2000米。

    3、这个题目记得不太清晰了,大致是这样的:小明打算用20元去买花,要充分利用这些钱,那么他必须买那一种花?

        A、单价3.8元的  B单价4元的  C单价4.4元的   D单价6元的

    这个题目呢我一看觉得如果编程实现的话非常容易!直接4个嵌套循环就ok,代码如下

     1 protected void Button2_Click(object sender, EventArgs e)
     2         {
     3             List<string> l = new List<string>();
     4             for (int i = 0; i < 5; i++)
     5             {
     6                 for (int j = 0; j < 5; j++)
     7                 {
     8                     for (int x = 0; x < 5; x++)
     9                     {
    10                         for (int y = 0; y < 5; y++)
    11                         {
    12                             if (3.8*i+4*j+4.4*x+6*y==20)
    13                             {
    14                                 l.Add(i.ToString() + "	" + j.ToString() + "	"+x.ToString()+"	"+y.ToString());
    15                             }
    16                         }
    17                     }
    18                 }
    19             }
    20             ListBox1.DataSource = l;
    21             ListBox1.DataBind();
    22         }

    执行结果(只有2组满足,对比可知选B):


    问题:如果我们在卷面做的时候要一种情况一种情况地试吗?当时我做的时候我直接选的能被整除的B,但是我却不知道问什么!有知道的大神请分享下思想~

    未完待续……

  • 相关阅读:
    学习笔记之05-printf和scanf函数
    学习笔记之04-函数
    学习笔记之03-第一个C程序代码分析
    学习笔记之02-第一个C程序
    学习笔记之01-C语言概述
    Internal Server Error with LAMP
    Git学习总结
    Git-多人协作
    素数之和
    数列之和
  • 原文地址:https://www.cnblogs.com/markwave/p/3759556.html
Copyright © 2011-2022 走看看