您的位置:首页 > 编程语言 > Java开发

蓝桥杯 算法提高JAVA题解:猴子吃桃问题

2020-03-23 18:39 148 查看

优化的递归,很容易得出,事实上这种优化并不能达到所有数据都在规定时间内

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了
  前一天剩下的一半多一个,到第n天吃以前发现只剩下一个桃子,
  要求编写函数GetNumber(int n)求出猴子共摘了几个桃子。
输入格式
  输入整数n。
输出格式
  输出整数m。
样例输入
一个满足题目要求的输入范例。
例:
3
样例输出
与上面的样例输入对应的输出。
例:
10
数据规模和约定
  输入的整数2<=n<=30.

class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();//第n天发现剩下1个桃子
int m=1;
if(n!=1){
for (double j=(n*n)%2==0?n*n:n*n+1;;j=j+2){//桃子数量肯定比n*n要多,注意j必须是double类型,不然会有多种答案
if (helper(j,n,1)){
m=(int)j;
break;
}
}
}
System.out.println(m);
}
public static boolean helper(double m,int n,int curr){
if (curr==n){
return m==1;
}else{
return helper(m-(m/2+1),n,curr+1);
}
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Beis 发布了9 篇原创文章 · 获赞 2 · 访问量 269 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: