论坛首页 招聘求职论坛

面试题:农夫养牛问题

浏览 7637 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-08   最后修改:2010-10-08
(defn cattle
  [sex  live]
  (condp = sex
    1 (cond 
        (> live 12) 0
        :else 1)
    0 (cond
        (< live 3)
        1
        (< live 11)
        (inc (reduce + (map #(+ 
                         (* 0.5 (cattle 0 (- live %))) 
                         (* 0.5 (cattle 1 (- live %))))
                    (range 3 (inc live)))))
        :else (reduce + (map #(+ 
                          (* 0.5 (cattle 0 (- live %))) 
                          (* 0.5 (cattle 1 (- live %))))
                    (range 3 11))))))


我写的,边界值搞不清楚呀!

--楼主代码里什么地方体现的0.5的概率呢?我怎么看不出来呢?O(∩_∩)O哈哈~
0 请登录后投票
   发表时间:2010-10-08  
shxiao 写道

--楼主代码里什么地方体现的0.5的概率呢?我怎么看不出来呢?O(∩_∩)O哈哈~


private int random() { 
        return (int)Math.round(Math.random()); 
    } 

这个函数要么返回0、要么返回1。根据API说明,Math.random返回的值近似均匀分布的。round(double x)函数则会返回最近x的long值。不知道你明白没有?
0 请登录后投票
   发表时间:2010-10-09  
第一头母牛应该是从1岁开始吧?
0 请登录后投票
   发表时间:2010-10-09  
长大做IT 写道
第一头母牛应该是从1岁开始吧?


问过那人,他说是从3岁开始。
0 请登录后投票
   发表时间:2010-10-09  
第一次回帖,不怎么会。也来说说我的思路。
public class CountCow {

	List<Cow> list = new ArrayList<Cow>();
	
	public CountCow() {
		Cow cow = new Cow();
		cow.setAge(1);
		cow.setSex(1);
		list.add(cow);
	}
	
	public void computeCow(int year){
		for(int i=0;i<year;i++){
			
			for(int j=0;j<list.size();j++){
				Cow cow = (Cow)list.get(j);
				cow.setAge(cow.getAge()+1);
				
				if(cow.getAge()>2&&cow.getAge()<11&&cow.getSex()==1){
				   list.add(new Cow());
				}

				if(cow.getAge()==12){
				   list.remove(list.lastIndexOf(cow));
				   j--;
				}
			}
			
		}
	}
	
	
	public static void main(String[] args) {
		CountCow c= new CountCow();
		c.computeCow(40);
		System.out.println(c.list.size());
		
	}

}

class Cow{
	
	int sex;    // 0 公, 1 母
	int age;
	
	Cow(){
		setAge(0);
		setSex(new Random().nextInt(2));
	}

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}
0 请登录后投票
   发表时间:2010-10-13  
1岁的开的母牛  在加上 3-10岁 每年产一头牛 公母50%  先算 从3岁开始算 一点累积 得出 的
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics