商人拉驴贩卖萝卜算法【转】
#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
?
原文来源:http://blog.csdn.net/firstboy0513/article/details/5923680