最近学习了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. 制做rpm包工具fpm安装

    安装ruby模块 [root@c01 ~]# yum install ruby rubygems ruby-devel -y # 查看当前使用的rubygems仓库 [root@c01 ~]# gem ...

  2. how-apache-flink-enables-new-streaming-applications-part-1

    https://data-artisans.com/blog/how-apache-flink-enables-new-streaming-applications-part-1 http://www ...

  3. angular的uiRouter服务学习(1)

    angular有内置的路由服务$route:angular -- $route API翻译 使用$route可以帮助实现路由的切换,视图的改变,但是这个内置的$route只包含了基本的功能,在很多场合 ...

  4. python(57):私有变量,代码块

    转载:http://blog.csdn.net/zhu_liangwei/article/details/7667745 引子 我热情地邀请大家猜测下面这段程序的输出: class A(object) ...

  5. u3d中的坐标系

    任何子级游戏对象 (Child GameObject) 的检视器 (Inspector) 中的变换 (Transform) 值都会相对于父级 (Parent) 的变换 (Transform) 值而显示 ...

  6. 通俗易懂讲解happens-before原则

      在接下来的叙述里我首先会说明happens-before规则是干什么用的,然后用一个简单的小程序说明happens-before规则 一.happens-before规则 我们编写的程序都要经过优 ...

  7. FIDDLER的使用方法及技巧总结(连载四)FIDDLER通用规则更改

    四.FIDDLER通用规则更改 To make custom changes to web requests and responses, use FiddlerScript to add rules ...

  8. HTTP请求与响应报文详解

    如图所示,这是客户端往服务器发送请求时的报文: 一般来说,将报文分成三个部分,请求行.请求头.请求体 如图,请求行包括三部分内容 1.请求方法,在HTTP里的请求方法种类较多,但就移动端开发来说,常用 ...

  9. Kafka vs RocketMQ—— Topic数量对单机性能的影响

    引言 上一期我们对比了三类消息产品(Kafka.RabbitMQ.RocketMQ)单纯发送小消息的性能,受到了程序猿们的广泛关注,其中大家对这种单纯的发送场景感到并不过瘾,因为没有任何一个网站的业务 ...

  10. iis下php 500错误

      很不想用iis,然而客户不想增加机器,只好按客户的意思了.可是没想到发送短信以在本地 机器上是好的,在iis下直接500.   一开始以为是防火墙问题,后来检查了一下没有,再后来换了一个短信接口, ...