zoukankan      html  css  js  c++  java
  • java-趣味算法

    最近学习了python,看得懂,但真不愿意写python的代码。

    我想了想,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;
    	}
    }
    
  • 相关阅读:
    只有程序员才懂这些黑色幽默!
    只有程序员才懂这些黑色幽默!
    程序员常访问的国外技术交流网站
    回归分析:非线性nlinfi
    Java设计模式(二十一):职责链模式
    Angular4——7.表单处理
    ubuntu 代理设置
    Qt 隐藏标题栏 窗口移动 鼠标事件
    Shevon's Blog
    Allenmind's Blog
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/7305866.html
Copyright © 2011-2022 走看看