java编程 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜.已知驴一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。问:商人共可卖出多少胡萝卜?

//https://blog.csdn.net/qq_27787501/article/details/120079200
//总里程 distance
//总萝卜数 allDealNum
//每里程消耗萝卜数量 oneDistanceUsing
//每次移动数量 oneLevelNum
//https://blog.csdn.net/qq_27787501/article/details/120079200
public int getCanDealNum(int distance, int allDealNum, int oneDistanceUsing, int oneLevelNum) {
    int i = 0; //商人距离起点的里程
    int n = allDealNum; //总萝卜数
    for(i = 0; i < distance; i++)
    {
        //计算要分几次搬运,是下取整。
        int x = (int)((double)n/oneLevelNum);
        //如果回去搬萝卜的代价比搬过来的萝卜数量大,说明没价值,不要返回去搬,扔了。
        //https://blog.csdn.net/qq_27787501/article/details/120079200
        if(n % oneLevelNum != 0 && n % oneLevelNum > 2 * oneDistanceUsing)
        {
            x += 1;
        }
        //https://blog.csdn.net/qq_27787501/article/details/120079200
        //如果要回去多次搬运,则往返路程要计算好。两次搬运要走三次路。
        //如果要回去多次搬运,则往返路程要计算好。三次搬运要走五次路。
        //https://blog.csdn.net/qq_27787501/article/details/120079200
        //一次搬运当然就一次路就OK了。
        if(x > 0)
        {
            x += x - 1;
        }
        //让驴吃掉的萝卜。
        n -= x * oneDistanceUsing;
        //https://blog.csdn.net/qq_27787501/article/details/120079200
    }
    return n;
    //https://blog.csdn.net/qq_27787501/article/details/120079200
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值