趣味题笔记

一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛

public class Cow {

int age = 0;
public static void main(String[] args) {
ArrayList h = new ArrayList();
h.add(new Cow());
for(int i = 1;i <= 10;i++){
for(int j = 0;j <h.size();j++){
Cow cow = (Cow)h.get(j);
if(cow.age>=3){
h.add(new Cow());
}
cow.age = cow.age+1;
}
}
System.out.println("10年后牛的总头数:"+h.size());

}

}




有一家人,晚上要过一个独木桥。但是他们只有一盏灯,而这盏灯只能使用30秒了。要在灯熄灭前过这座桥,他们一家五口人每个人过桥的速度不同。瘦人1秒,小胖3秒,姑娘6秒,大胖8秒,瘸子12秒。 每次只能过两个人。 过去后,对岸要有一个人再把灯送回来
试用java编写程序写出所有过桥的可能


package com.base;

import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;

public class Bridge3 {
public static void main(String[] args) {
LinkedList left = new LinkedList();
LinkedList right = new LinkedList();
int time = 0; // 获取总时间
int[] array = new int[5];
Scanner input = new Scanner(System.in);
System.out.println("请输入5个数:");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
left.add(array[i]);
}
Collections.sort(left); // 对left的数进行从小到大排序
for (int i = 0; i < array.length - 2; i++) // 循环所需次数array.length-2
{
if (i == 0 || i == array.length - 3) {
time = time + Min2toRight(left, right);
} else if (i == 1) {
time = time + Max2toRight(left, right);
}
time = time + Min1toLeft(left, right);
}
time = time + Last2toRight(left, right);
System.out.println("总用时为" + time + "秒");
}

static int Min2toRight(LinkedList L, LinkedList R) {
int timeR; // 获取到左边的时间
R.add(L.get(0));
R.add(L.get(1));
timeR = Integer.parseInt(L.get(1).toString());
Collections.sort(R);
L.remove(0);
L.remove(0);
Collections.sort(L);
printL(L);
System.out.print("-------->");
printR(R);
System.out.println("用时" + timeR + "秒");
return timeR;
}

static int Min1toLeft(LinkedList L, LinkedList R) {
int timeL;
timeL = Integer.parseInt(R.get(0).toString()); // 获取到左边的时间
L.add(R.get(0));
Collections.sort(L);
R.remove(0);
Collections.sort(R);
printL(L);
System.out.print(" <--------");
printR(R);
System.out.println("用时" + timeL + "秒");
return timeL;
}

static int Max2toRight(LinkedList L, LinkedList R) {
int timeR; // 获取到左边的时间
R.add(L.get(L.size() - 1));
R.add(L.get(L.size() - 2));
timeR = Integer.parseInt(L.get(L.size() - 1).toString());
Collections.sort(R);
L.remove(L.size() - 1);
L.remove(L.size() - 1);
Collections.sort(L);
printL(L);
System.out.print("-------->");
printR(R);
System.out.println("用时" + timeR + "秒");
return timeR;
}

static int Last2toRight(LinkedList L, LinkedList R) {
int timeR; // 获取到左边的时间
R.add(L.get(0));
R.add(L.get(1));
timeR = Integer.parseInt(L.get(L.size() - 1).toString());
Collections.sort(R);
L.remove(L.size() - 1);
L.remove(L.size() - 1);
Collections.sort(L);
printL(L);
System.out.print("-------->");
printR(R);
System.out.println("用时" + timeR + "秒");
return timeR;
}

static void printL(LinkedList L) {
for (int i = 0; i < L.size(); i++) {
System.out.print(L.get(i) + " ");
}
}

static void printR(LinkedList R) {
for (int i = 0; i < R.size(); i++) {
System.out.print(R.get(i) + " ");
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值