`
microjava
  • 浏览: 309627 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

趣味题笔记

J# 
阅读更多
一个农夫养了一头牛,三年后,这头牛每年会生出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) + " ");
		}
	}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics