最近学习了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;
}
}

java-趣味算法的更多相关文章

  1. 史上最全的java随机数生成算法分享(转)

    这篇文章主要介绍了史上最全的java随机数生成算法,我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法 String password = RandomUtil.generat ...

  2. 常用Java排序算法

    常用Java排序算法 冒泡排序 .选择排序.快速排序 package com.javaee.corejava; public class DataSort { public DataSort() { ...

  3. 使用Java练习算法常用的基本操作

    一.使用Java练习算法常常需要使用控制台的数据输入和输出,下面记录一下基本的使用方法: 基本用法 import java.util.*; public class Main { public sta ...

  4. JAVA经典算法40题及解答

    JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...

  5. Java基础算法集50题

    最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...

  6. Java经典算法四十例编程详解+程序实例

    JAVA经典算法40例 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程 ...

  7. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  8. JAVA经典算法40题

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

  9. Java与算法之(13) - 二叉搜索树

    查找是指在一批记录中找出满足指定条件的某一记录的过程,例如在数组{ 8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15 }中查找数字15,实现代码很简单 ...

  10. java排序算法(一):概述

    java排序算法(一)概述 排序是程序开发中一种非常常见的操作,对一组任意的数据元素(活记录)经过排序操作后,就可以把它们变成一组按关键字排序的一组有序序列 对一个排序的算法来说,一般从下面三个方面来 ...

随机推荐

  1. 菜鸟学Java(十三)——将MyEclipse项目导入到Eclipse

    最近由于种种原因,需要将以前用MyEclipse写的项目迁移到Eclipse中.但是当我将之前的项目import到Eclipse中后,发现根本不能运行.经过一番寻觅,终于让我找到了一种解决的办法.一起 ...

  2. git提交本地代码到新分支

    背景: 从branchA分支拉了一份代码,做了一些修改,但是不想提交到branchA分支,想新建一个分支branchB保存代码. 操作方法: 添加本地需要提交代码 git add . 提交本地代码 g ...

  3. js 时间格式化和时间戳

    formatMessageTime: function (time) { var week = { "0": "星期日", "1": &qu ...

  4. 腾讯云提示invalid pos, pos is bigger than filesize! pos: 0, file_size: 0错误

    腾讯云提示invalid pos, pos is bigger than filesize! pos: 0, file_size: 0错误 起因 使用hdfs dfs -text xxx命令提示下面错 ...

  5. C#数组 添加元素

    例1: string[] a = new string[] { "1", "2", "3" }; 给a追加一个 "4" ...

  6. Leetcode:Flatten Binary Tree to Linked List 解题报告

    Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-place. For ex ...

  7. Python(一)之Python概述

    前言:最近学习Python基础,网上找了视频教程,本篇记录下Python概况,学习环境Python2.6. 学习Python首先得会获取Python自带的帮助信息,下面几个实用的内置函数,不管是工作或 ...

  8. idea 同project添加多个module maven支持

    选中新项目的pom.xml  会识别maven项目

  9. Docker 容器更新,打包,上传到阿里云

    上几章讲了镜像的拉取和运行. 这次来尝试如何将已经运行的容器打包,封装成镜像,并且上传到阿里云上,为了别的地方下载和使用更加的方便. 首先,进入镜像,如果不清楚地,可以看下上一章. [root@VM_ ...

  10. 【转】mybatis 自增主键配置

    mybatis自增主键配置(?) mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同.基本上经常会遇到的就是Oracle Sequece 和 MySQL 自增主键,至 ...