一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
2011-03-24 13:07
447 查看
题目如题:
一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
在此用程序的解决,其实不用程序的也很简单:
程序说明:
无
论去返都消耗,以消耗最大来看!当运输3000时要往、返共计5倍路程,所以最初1000根消耗完应该在200公里处(最后一次往返也是有用的,如果吃的
必须是1000以内的萝卜);由此变为运输2000,往、返共计3倍路程,第二个1000根消耗在533公里处(严格此时此处有1001根来说是消耗了
999根,最后一根这里不要了;这要看吃萝卜的限定了,结果可能差一根);最后1000根萝卜从533公里处出发,因而最后剩533根萝卜,呵呵用程序求
解其实多少有点浪费。
#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;
}
得出结果:
商人最多可卖出的胡萝卜数量为:534
Press any key to continue
一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
在此用程序的解决,其实不用程序的也很简单:
程序说明:
无
论去返都消耗,以消耗最大来看!当运输3000时要往、返共计5倍路程,所以最初1000根消耗完应该在200公里处(最后一次往返也是有用的,如果吃的
必须是1000以内的萝卜);由此变为运输2000,往、返共计3倍路程,第二个1000根消耗在533公里处(严格此时此处有1001根来说是消耗了
999根,最后一根这里不要了;这要看吃萝卜的限定了,结果可能差一根);最后1000根萝卜从533公里处出发,因而最后剩533根萝卜,呵呵用程序求
解其实多少有点浪费。
#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;
}
得出结果:
商人最多可卖出的胡萝卜数量为:534
Press any key to continue
相关文章推荐
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。
- A城一个商人有一头驴子和3000根胡萝卜.要将萝卜拉到1000公里外的B城去卖,只能用驴子驮。已知驴子一次性可驮1000根胡萝卜,但每走一公里要吃掉一根胡萝卜.问商人共可卖出多少胡萝卜?
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜
- 一个商人骑一头骆驼去1000公里长的沙漠卖3000根胡萝卜 骆驼一次只能驮1000根胡萝卜 每工里骆驼就得吃一跟胡萝卜 请问那位商人最后能卖多少跟胡萝卜?
- 一个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多只能搬50根香蕉,它每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里?
- 一个进程(Process)最多可以生成多少个线程(Thread)
- 教你验证一个文件夹下最多可以有多少个子文件夹
- linux默认情况下,一个进程最多能打开多少文件?
- 用函数和递归求n个三角形能把一个平面分成最多多少块
- 已知今天是几月几号,编一个程序,求若干天之后是多少号。
- 【codeforces 680 D】【数学+贪心+DFS】【求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少】
- 浅析linux环境下一个进程最多能有多少个线程
- 新问题:一个进程最多可以接收多少个socket连接? - C/C++ - ChinaUnix.net -
- 一个mssqlserver表最多可以存放多少数据??
- 二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。 对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根 小易想知道最多可以放多少块蛋糕在网格盒子里。 输入描述: 每组数组包含网格长宽W,
- 教你验证一个文件夹下最多可以有多少个子文件夹
- window一个文件夹中最多可以存储多少个文件
- utf8一个汉字最多需要多少个byte
- 有一个糖果店的糖果有三种包装,分别是小包有6颗,中包有9颗,大包有20颗,如果我们只按整包买糖果,请问不能买到的糖果数最多是多少颗?