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 编程论坛上最常见的问题之一是“怎样创建线程池?”。几乎在每个服务器应用程序中都会出现线程池和工作队列问题。本文中,Brian Goetz 探讨了线程池的动机、一些基本实现和调优技术以及一些要避免的常见危险。
为什么要用线程池?
诸如 Web
服务器、数据库服务器、文件服务器或邮 ......
2009-11-23
支持常见的数据类型的映射 Java 类型 C 类型 & ......
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
......
想想自己明年就要毕业了,但自己心里总是很担心,也不知道自己学这个到底是对还是错!总是听说现在做程序的工作不好找,工资很低,现在有好多同学都没学了,也不知道自己是不是还要坚持下去,是不是还要jiava这条路。感觉好迷茫....... ......
这个问题今天终于看一个哥们儿的文章搞定了,在此谢谢!所以转载一下
=============================================================
java-package包的使用方法
当一个大型程序交由数个不同的程序人员开发时,用到相同的类名是很有可能的,那么如果发生了这样的事件我们该怎么办那?,在我们java程序开 ......