码迷,mamicode.com
首页 > 其他好文 > 详细

有意思的笔试题记录与分析

时间:2014-06-03 14:16:36      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   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=π r2 h,h不变时v扩大到原来的4倍。我们再来从微观看,上边的拉力之所以能和下边的拉力达到平衡,是因为绳子传递了这个拉力,绳子之所以能传递这个拉力是因为其分子之间有引力,当绳子之间分子的引力不足以传递这个拉力时,绳子的分子引力被拉力破坏,就像拉开吸引在一起的磁铁一样,绳子宏观表现被拉断。所以我们只需分析单位横截面上的拉力即可,虽然绳子加粗会导致绳子的重力变为原来的4倍,但是同时横截面积液扩大为原来的4倍,多以作用在单位横截面上的拉力不变。所以还是2000米。

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

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

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

 

bubuko.com,布布扣
 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() + "\t" + j.ToString() + "\t"+x.ToString()+"\t"+y.ToString());
15                             }
16                         }
17                     }
18                 }
19             }
20             ListBox1.DataSource = l;
21             ListBox1.DataBind();
22         }
bubuko.com,布布扣

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

bubuko.com,布布扣


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

 

未完待续……

有意思的笔试题记录与分析,布布扣,bubuko.com

有意思的笔试题记录与分析

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/weixuan1313/p/3759556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!