锁定老帖子 主题:面试题:农夫养牛问题
精华帖 (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哈哈~ |
|
返回顶楼 | |
发表时间: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值。不知道你明白没有? |
|
返回顶楼 | |
发表时间:2010-10-09
第一头母牛应该是从1岁开始吧?
|
|
返回顶楼 | |
发表时间:2010-10-09
长大做IT 写道 第一头母牛应该是从1岁开始吧?
问过那人,他说是从3岁开始。 |
|
返回顶楼 | |
发表时间: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; } } |
|
返回顶楼 | |
发表时间:2010-10-13
1岁的开的母牛 在加上 3-10岁 每年产一头牛 公母50% 先算 从3岁开始算 一点累积 得出 的
|
|
返回顶楼 | |