算法-猴子分桃

1.问题:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?

2.解決思路:可以痛過递归来处理,f(n-1)=4(f(n)-1)/5;中间如果存在(num-1)%5!=0;说明桃子数不符合,如果从5-0,最后能进行到猴子数达到0,说明这个桃子数num符合

3.简单实例:

/*** @Author: hs* @Description: 猴子分桃* @Date: 2021-02-01 18:36*/
public class MonkeyBranchPeach {public static void main(String[] args) {int monkeys = 5;int peaches = 10000;boolean isOk = false;for (int i = 1; i < peaches; i++) {if (check(monkeys, i)) {System.out.println("找到最少值为:" + i);isOk = true;}}if (!isOk) {System.out.println("没有找到哦");}}private static boolean check(int monkeys, int peaches) {if (monkeys == 0) {return true;}if ((peaches - 1) % 5 != 0) {return false;}peaches = 4 * (peaches - 1) / 5;return check(monkeys - 1, peaches);}
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部