一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走

但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?这道题怎么个算法?... 但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
这道题怎么个算法?
展开
 我来答
陈作为新人新9457
2011-07-15 · TA获得超过6.9万个赞
知道大有可为答主
回答量:5.3万
采纳率:0%
帮助的人:6943万
展开全部
卖完胡萝卜,驴还要返回1000公里,路上就不吃胡萝卜了吗?两种可能,要么饿死,要么把商人吃了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全燕兰9309
2011-07-14 · TA获得超过7.9万个赞
知道大有可为答主
回答量:5.9万
采纳率:0%
帮助的人:7838万
展开全部
直接找3头驴,驮过去以后直接卖驴
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A614398084
2012-05-20
知道答主
回答量:20
采纳率:0%
帮助的人:13.1万
展开全部
驴会吃胡萝卜?吃胡萝卜会不会噎死?在沙漠里会不会热死?渴死?那商人肿么办,喂进去的萝卜肿么办、、、、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
毛毛虫的冬季
2011-07-08
知道答主
回答量:35
采纳率:0%
帮助的人:17.3万
展开全部
回答者: smxxskw 正解!
C++解法:
#include <iostream.h>
#include <math.h>
int main()
{
int i = 0; //循环变量
int s = 1000; //总里程
int n = 3000; //总萝卜数
for(i = 0; i < s; i++)
{
//计算要分几次搬运,是下取整。
int x = (int)ceil((double)n/1000);
//如果回去搬萝卜的代价比搬过来的萝卜数量大,说明没价值,不要返回去搬,扔了。
if(n % 1000 != 0 && n % 1000 <= x)
{
x -= 1;
}
//如果要回去多次搬运,则往返路程要计算好。两次搬运要走三次路。
if(x == 2)
{
x += 1;
}
//如果要回去多次搬运,则往返路程要计算好。三次搬运要走五次路。一次搬运当然就一次路就OK了。
else if(x == 3)
{
x += 2;
}
//让驴吃掉的萝卜。
n -= x;
}
cout << "商人最多可卖出的胡萝卜数量为:" << n << endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱笑的Rita
2013-04-06
知道答主
回答量:7
采纳率:0%
帮助的人:9955
展开全部
分四部分计算
因为每次只能运1000根,所以从3000到两千的过程要返回两次,也就是要消耗5根
然后可以走200米,还剩2000根
再从2000少到1000的过程每次要返回一次,所以每次要消耗3根
但是需要是3的倍数,又要卖最多所以取999
最后就还剩1001根,这次可以走333米
再走一米,但是先吃一根萝卜再走,就还剩1000根了,走的路就是200+333+1=534
最后一步就是背1000根走1000-534米,也就是还剩534根了。
主要思路是要想到最后要剩1000根,因为它每次最多背那么多,所以要想吃的最少最后要剩1000的样子才能保证吃得最少,再就要想到需要返回的次数,哪个阶段返回几次,这样很容易就想到要分段计算了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式