java-趣味算法
2017-08-08 11:12
337 查看
最近学习了python,看得懂,但真不愿意写python的代码。
我想了想,java是我的专业和强项,我为什么要抛之而顾它呢,自己也不感兴趣
我在自己的领域做到专业就行了,别人的领域让别人去搞吧
先一技之长,再言其它
小母牛的算法题,我的头脑一向不灵活 ,算法更甚,但不妨碍我喜欢呀
农场有牛小母牛
每年生头小母牛
母牛五岁产母牛
几年农场多少母牛?
这是小学生的题目,如果列出来,找出规律,我相信现在的小朋友们应该都会的。但是我的智商没有小朋友们的高。
分析:
1、农场有只老牛,能生母牛,年纪大于5岁的,每年会生一头母牛
2、生下的小母牛,大于5岁后,才能成长为一牛老母牛,生小母牛
代码如下:
我想了想,java是我的专业和强项,我为什么要抛之而顾它呢,自己也不感兴趣
我在自己的领域做到专业就行了,别人的领域让别人去搞吧
先一技之长,再言其它
小母牛的算法题,我的头脑一向不灵活 ,算法更甚,但不妨碍我喜欢呀
农场有牛小母牛
每年生头小母牛
母牛五岁产母牛
几年农场多少母牛?
这是小学生的题目,如果列出来,找出规律,我相信现在的小朋友们应该都会的。但是我的智商没有小朋友们的高。
分析:
1、农场有只老牛,能生母牛,年纪大于5岁的,每年会生一头母牛
2、生下的小母牛,大于5岁后,才能成长为一牛老母牛,生小母牛
代码如下:
package util; public class Cows { private int age;//牛的年纪 public Cows() { super(); // TODO Auto-generated constructor stub } public Cows(int age) { super(); this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } //生产母牛的条件:年纪得大于5岁,返回1头小母牛,如果小于5岁,则返回空 public Cows produceCow() { if(age>5) { return new Cows(1); } return null; } }
package util; /** * 1.分析: 1.1农场开始有一头具有生育能力(年龄大于5岁)的母牛,以后每年都会生小母牛,而小母牛5年长大后又能生小母牛,从面向对象的角度分析,生小母牛的能力, 属于母牛对象,我们可以把它定义为一个内部方法;农场容纳着母牛及生产的小母牛,我们可以在农场内部维护一个长度可变的容器(集合),存储所有的母牛; 随着时间的变化,母牛的年龄在变化,农场的母牛数量也在变化,我们可以在农场中定义一个随着时间变化,而同时改变农场属性(母牛数量)和母牛属性(年龄) 功能的方法。 1.2对象:农场和母牛(属性:年龄) 1.3对象的关系,农场和母牛是组合关系 2.把对象转换为类 2.1母牛对象(年龄属性age及生育小母牛方法produceCow) */ import java.util.ArrayList; import java.util.List; public class Farm { private static List<Cows> cows; //新建农场时的初始化,初始化一头具有生育能力的母牛(年纪5岁以上) static { cows=new ArrayList<Cows>(); Cows cow = new Cows(5); cows.add(cow); } //获取第year年母牛对象集合 public static List<Cows> getCows(int year){ for(int i=0;i<year;i++) { //新一年的变化,统计牛场奶牛数量时,重新建一个临时奶牛圈,圈住已有的奶牛和新生的奶牛 List<Cows> tempCows = new ArrayList<Cows>(); for (Cows cow1 : cows) {//遍历已有奶牛圈 tempCows.add(cow1);//把原有奶牛加入新奶牛圈 cow1.setAge(cow1.getAge()+1);//原奶牛年纪+1 Cows newCow=cow1.produceCow();//原奶牛自己判断自己年纪,如果到了生育期,自动生成一头小牛,没到5岁,返回null if(newCow!=null) { tempCows.add(newCow);//将小牛加入新奶牛圈 } } cows = tempCows;//将临时奶牛圈里的所有奶牛赶入奶牛圈,原奶牛圈会越来越多的 System.out.printf("第%d年奶牛数量:%d%n",i+1,cows.size()); tempCows=null;//撤掉临时 的奶牛圈 } return cows; } }
相关文章推荐
- java趣味算法(一)——约瑟夫问题
- 趣味算法——青蛙过河(JAVA)
- 求 JAVA 字符串匹配 完美算法
- 【LeetCode-面试算法经典-Java实现】【014-Longest Common Prefix(最长公共前缀)】
- java实现堆排序(2016年腾讯内推笔试的一道算法题)
- 【LeetCode-面试算法经典-Java实现】【112-Path Sum(路径和)】
- Java的内存区域以及各种垃圾回收算法和垃圾回收器
- Java 数组到 HashMap 之算法解释
- 图象细化算法实现的java applet源代码
- java基础知识之 算法 【冒泡排序】【快速排序】
- java指纹识别的精确算法——SIFT算法
- java,javascript对18位身份证格式的验证算法
- java-web遗传算法最短路径规划
- Java内存管理及GC算法
- Java数据结构与算法:栈
- 一步步学习数据结构和算法之选择排序效率分析及java实现
- Java中判断对象是否存活算法之可达性分析算法
- java实现基于距离向量算法 路由协议
- Java-算法-数组倒置
- 中国农历算法java实现