zoukankan      html  css  js  c++  java
  • 算法学习——递推之水手分椰子

    算法描述

    五个水手来到一个岛上,采了一堆椰子后,因为疲劳都睡着了。一段时间后,第一个水手醒来,悄悄地将椰子等分成五份,多出一个椰子,便给了旁边的猴子,然后自己藏起一份,再将剩下的椰子重新合在一起,继续睡觉。不久,第二名水手醒来,同样将椰子了等分成五份,恰好也多出一个,也给了猴子。然而自己也藏起一份,再将剩下的椰子重新合在一起。以后每个水手都如此分了一次并都藏起一份,也恰好都把多出的一个给了猴子。第二天,五个水手醒来,发现椰子少了许多,心照不喧,便把剩下的椰子分成五份,恰好又多出一个,给了猴子。请问水手最初最少摘了多少个椰子?

    算法思路

    1. 这里需要注意的是,没有初始条件,求最初最少摘了多少个椰子

    2. y[i] 代表第i个水手偷藏的椰子

      由题目可以得到 个迭代方程 n/5 = (n-n/5-1)/5

      这里等式左边是第1个水手所藏的椰子数,右边则是下一个水手所藏的椰子数

      化简可得递推公式y[i+1]=(4y[i]-1)/5 从前往后推

    3. 当每次递推的所藏椰子数为正整数,则满足条件,这里通过使用floor函数可以判定一个数是否为整数

    算法实现

    	int i =1;
    	double k,y,x;
    	k=1.0;
    	y=k;
    	while(i<=5){
    		i++;
    		y = (4*y-1)/5;
    		if(y!=Math.floor(y)){
    			k++;
    			y=k;
    			i=1;
    		}
    	}
    	x=5*k+1;
    	System.out.println("椰子至少有"+x+"个");
    

    结果

  • 相关阅读:
    不做男女朋友,做蓝颜吧
    前端 让我尴尬~
    让IE6,IE7,IE8,IE9支持CSS3
    解决chrome不能显示12PX以下字号的字体问题!
    jQuery阻止冒泡和HTML默认操作
    Lazy Load, 延迟加载图片
    解秘微软雅黑
    FLV流媒体应用大攻略
    提升你设计水平的CSS3新技术
    分享下自写的HTML CSS规范
  • 原文地址:https://www.cnblogs.com/stars-one/p/9916245.html
Copyright © 2011-2022 走看看