本文主要是介绍【题目】有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 文件名:[作业]
- 作者:〈漆黑〉
- 描述:〈 猴子来了
- 有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。
- 如果只能算整根的话,猴子最后可以搬回家16根,中间路上不得已扔掉两根,或者全部吃完。
- 猴子走到16米的时候,还剩34根,放下18根香蕉,拿着16根往回走,走到香蕉堆正好吃完,再拿上那50根香蕉往家走,走到16米的时候,那里放着18根香蕉,用那18根补充满手里的,再往家走,走到家,剩16根,16米处扔掉两根
- 猴子走到17米的时候,还剩33根,放下16根香蕉,拿着17根往回走,走到香蕉堆正好吃完,再拿上那50根香蕉往家走,走到17米的时候,那里放着16根香蕉,用那16根补充手里的,手里有49根,距离家还有33米,再往家走,走到家,剩16根 〉
- 创建时间:2019.7.24
- 已完善
/****************************
* 文件名:[题目]
* 作者:〈漆黑〉
* 描述:〈 猴子 〉
* 创建时间:2019.1.5
****************************/
import java.util.Scanner;public class Test {public static void main(String[] args){System.out.println( "猴子100个香蕉,距离家50米,一次最多搬50根,搬到家最多" + monkey(100, 50, 50) + "根。");}static int monkey(int sum, int dis, int carry){//sum个香蕉,距离dis米,一次最多搬carry个香蕉,均大于0整数,当它有超过50个时,搬50个走一米把剩下的放下再回头搬其它的过来,每走一米要吃到3个香蕉if(carry < 2) return 0;//一次搬一个只能搬0个if(carry == 2){//一次搬两个if(dis > 1) return 0;//距离>=2米,只能搬0个if(sum < 2) return 0;//香蕉只有一个,只能搬0个return 1;//否则可以搬1个到家}if(sum <= dis) return 0;//香蕉数量 < 距离if(carry > sum) return sum - dis;//一次能全搬完while(dis > 0){if(sum % carry <= 2) sum = sum - (sum % carry);//如果最后剩下1到2个香蕉,则舍去sum -= (2 * ((sum - 1) / carry) + 1);//如果承重为carry,剩余香蕉为sum,当sum > carry时,把香蕉搬1米要消耗 2*((sum-1)/carry) + 1)dis--;}return sum;}
}
这篇关于【题目】有只猴子在树林采了100根香蕉堆成一堆,猴子家离香蕉堆50米,猴子打算把香蕉背回家,每次最多能背50根,可是猴子嘴馋,每走一米要吃一根香蕉,问猴子最多能背回家几根香蕉。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!