逻辑面试题,有空进来看看

meteor57 2009-08-13 09:52:05
上次去面试,这两题不会~~~
-_-!
发过来给大家也看看

1.牛在草场吃草,而且草每天都会长.如果是27头牛,6天会把草吃完;如果是23头牛,9天会把草吃完;请问如果是21头牛几天会把草吃完?

2.某商人利用一头驴要把3000个萝卜从A地运到B地去卖.AB相距1000公里.驴每走一公里要吃一个萝卜,且一次只能拉1000个萝卜.请问最后商人在B地还有多少个萝卜可以卖?
...全文
686 33 打赏 收藏 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
meteor57 2009-08-15
  • 打赏
  • 举报
回复
谢谢各位,让我大开眼界了^_^
chogimoga 2009-08-14
  • 打赏
  • 举报
回复
我感觉这道题可以转化为最后一段路骆驼要背上1000个萝卜,而且之前吃掉的2000个萝卜要保证走最远的路程,这样剩下的萝卜就是最多的.

走两段的话:202 532
走三段的话:1 250 500


#include <iostream>
using namespace std;

void PrintTwo()
{
int nDist1(0),nDist2(0);

for ( int i = 0;i <= 1000;i++ )
{
for ( int j = i;j <= 1000-i;j++ )
{
int nFirst = 5*i;
int nCount = (3000-nFirst)/1000;
int nSecond = (j-i)*(2*(1+nCount)-1);

if ( nFirst+nSecond==2000 )
{
if ( j > nDist2 )
{
nDist1 = i;
nDist2 = j;
}
}
}
}
cout<<nDist1<<" "<<nDist2<<"\n";
}

void PrintThree()
{
int nDist1(0),nDist2(0),nDist3(0);

for ( int i = 0;i <= 1000;i++ )
{
for ( int j = i;j <= 1000-i;j++ )
{
for ( int k = j;k <= 1000 -k;k++ )
{
int nFirst = 5*i;
int nCount = (3000-nFirst)/1000;
int nSecond = (j-i)*(2*(1+nCount)-1);

nCount = (3000-nSecond)/1000;
int nThird = (k-j)*(2*(1+nCount)-1);

if ( nFirst+nSecond+nThird==2000 )
{
if ( k > nDist3 )
{
nDist1 = i;
nDist2 = j;
nDist3 = k;
}
}
}
}
}
cout<<nDist1<<" "<<nDist2<<" "<<nDist3<<"\n";
}

void main()
{
PrintTwo();
PrintThree();
}


RJLIU 2009-08-14
  • 打赏
  • 举报
回复
老题了,534是正解,具体思路baidu google一下就好了
问题是商人放心把自己的萝卜随便放在一个xx公里处吗,等下次再去时恐怕早就被河蟹掉了吧。
何况这驴这么麻烦,走一公里还要吃个萝卜,我是商人的话直接租个车什么的将驴和萝卜一起运过去得了,又快又方便。
bigbug9002 2009-08-14
  • 打赏
  • 举报
回复
我的思路就是让驴尽量驮1000个向前走.

第一站要剩2000个才能保证到第二站时,每次驮1000个走.起点的3000个要驮三次,要5个单程,用1000/5得到了第一站的距离.

从第一站到第二站,要驮走2000个,要3个单程,用1000/3,得到了第一站到第二站的距离。
chogimoga 2009-08-14
  • 打赏
  • 举报
回复
我想问一下,你那个533黄金点是怎么想出来的
凤朝凰 2009-08-14
  • 打赏
  • 举报
回复
学习
ctlu2ct2t 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 bigbug9002 的回复:]
引用 15 楼 gesanri 的回复:
引用 14 楼 bigbug9002 的回复:
我算的最后可以剩533个。
Java code
    200M      533M  1000M-----A--------B-------终点
  2000个    1000个    533个
1、每次都让驴驮1000个,到A点放下600,带200在回来的路上吃。来回5次,吃掉1000个,剩下2000个。
2、从A到B,333.33M。每次驮1000个,来回三次,吃掉1000个。剩1000个。
3、从B至终点,最后剩533个。

不知道还有没有剩的多的?


每次1000个来回5次?哪有那么多萝卜?看不明白


往返三次,第三次只去无回,就是驴走了5次200M的意思.
[/Quote]

bigbug9002 很不错了!很懂行呀!知识面很广呀!顶你一下!
gahyyai 2009-08-14
  • 打赏
  • 举报
回复
mark
pioneer604 2009-08-14
  • 打赏
  • 举报
回复
原来中间还可以有临时仓库,这题目出得真新鲜
saab206 2009-08-14
  • 打赏
  • 举报
回复
过来学习 。
rwg202315 2009-08-14
  • 打赏
  • 举报
回复
每少1000个萝卜 驴子就可以少来回2趟 3000驴子全驮走要5次,2000要3次,1000要1次
就看1000个萝卜最远走多少 1000/5=200公里 1000/3=333.3公里 不够一公里不给它吃
能省554个
qiubojuncode 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gesanri 的回复:]
第一题,设一头牛每天吃草x吨,草场每天长草y吨,一开始有草z吨,列方程:
z=6*(27*x+y)
z=9*(23*x+y)
得到y=15x
设21头牛要t天
t*(21*x+y)=z
带进上面2个方程去
t=7
[/Quote]
7 天肯定错了,23头都用9天,21头了应该用的天数>9天
gadfly1981 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 rjliu 的回复:]
老题了,534是正解,具体思路baidu google一下就好了
问题是商人放心把自己的萝卜随便放在一个xx公里处吗,等下次再去时恐怕早就被河蟹掉了吧。
何况这驴这么麻烦,走一公里还要吃个萝卜,我是商人的话直接租个车什么的将驴和萝卜一起运过去得了,又快又方便。
[/Quote]

顶,这驴胃口很好
bayougeng 2009-08-14
  • 打赏
  • 举报
回复
第二道题涉及到怎么安排路程的问题了。也就是说,多少公里为一个驿站。麻烦了。
第一题我算了下,不过是用方程式算的,结果是12天。
GG_wg 2009-08-13
  • 打赏
  • 举报
回复
哈,总比我那个剩负的好吧。来学习
bigbug9002 2009-08-13
  • 打赏
  • 举报
回复
也不好说,可能还有剩的多的办法?
gesanri 2009-08-13
  • 打赏
  • 举报
回复
不错,原来是这样顺着推出来,在每个点保证剩下的萝卜是1000的整数倍,应该是最多的了
bigbug9002 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 gesanri 的回复:]
引用 14 楼 bigbug9002 的回复:
我算的最后可以剩533个。
Java code
    200M      533M  1000M-----A--------B-------终点
  2000个    1000个    533个
1、每次都让驴驮1000个,到A点放下600,带200在回来的路上吃。来回5次,吃掉1000个,剩下2000个。
2、从A到B,333.33M。每次驮1000个,来回三次,吃掉1000个。剩1000个。
3、从B至终点,最后剩533个。

不知道还有没有剩的多的?


每次1000个来回5次?哪有那么多萝卜?看不明白
[/Quote]

往返三次,第三次只去无回,就是驴走了5次200M的意思.
gesanri 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 bigbug9002 的回复:]
我算的最后可以剩533个。
Java code
200M 533M 1000M-----A--------B-------终点
2000个 1000个 533个
1、每次都让驴驮1000个,到A点放下600,带200在回来的路上吃。来回5次,吃掉1000个,剩下2000个。
2、从A到B,333.33M。每次驮1000个,来回三次,吃掉1000个。剩1000个。
3、从B至终点,最后剩533个。

不知道还有没有剩的多的?

[/Quote]
每次1000个来回5次?哪有那么多萝卜?看不明白
bigbug9002 2009-08-13
  • 打赏
  • 举报
回复
我算的最后可以剩533个。

200M 533M 1000M
-----A--------B-------终点
2000个 1000个 533个

1、每次都让驴驮1000个,到A点放下600,带200在回来的路上吃。来回5次,吃掉1000个,剩下2000个。
2、从A到B,333.33M。每次驮1000个,来回三次,吃掉1000个。剩1000个。
3、从B至终点,最后剩533个。

不知道还有没有剩的多的?
加载更多回复(13)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧