Java 小例子:行列式和鸡兔同笼问题
鸡兔同笼问题就是二元一次方程组,高等数学里面用行列式来解此方程。具体过程可 Google “行列式 二元一次方程组
”。对于鸡兔同笼问题还要加上一个限制:方程的解必须是正整数。
下面是代码示例:
/**
* 鸡兔同笼问题。解法请 Google:“行列式 二元一次方程组”
*
* @author yiding.he
*/
public class BinaryLinearEquationGroup {
// 程序入口
public static void main(String[] args) {
int heads = 10;
int legs = 36;
int[] result = calculate(new int[][]{
{1, 1, heads}, // 鸡和兔子各有一个头,共 10 个;
{2, 4, legs} // 鸡有两只脚,兔子四只脚,共 36 只。
});
if (result != null && result.length > 0) {
System.out.println("结果:鸡有 " + result[0] + " 只,兔子有 " + result[1] + " 只。");
} else if (result == null) {
System.out.println("该题无解。");
} else if (result.length == 0) {
System.out.println("该题有无穷解。");
}
}
/**
* 解二元一次方程组,方程组的解必须是正整数,否则视为无解。
*
* @param params 方程组参数
*
* @return 返回 null 表示无解,返回空数组表示无穷解,否则表示正解。
*/
private static int[] calculate(int[][] params) {
Matrix2 delta = new Matrix2(new int[][]{
{params[0][0], params[0][1]},
{params[1][0], params[1][1]}
});
Matrix2 delta_x = new Matrix2(new int[][]{
{params[0][2], params[0][1]},
{params[1][2], params[1][1]}
});
Matrix2 delta_y = new Matrix2(new int[][]{
{params[0][0], params[0][2]},
{params[1][0], params[1][2]}
});
// 判定无穷解或无解的条件
if (delta.isZero() && delta_x.isZero() && delta_y.isZero()) {
return new int[]{};
} else if (delta.isZero()
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
......
java中科学计数法的解除
数据过大或接近于0,java会自动使用科学计数法显示
要使得数据以正常的小数显示可使用DecimalFormat类:
DecimalFormat format = new DecimalFormat("0.00000");
String value = format.format(doubleInstance);
......