代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
行列式和鸡兔同笼问题
作者:
Dezai.CN
/ 发布于
2011/7/13
/
638
鸡兔同笼问题就是二元一次方程组,高等数学里面用行列式来解此方程。具体过程可 Google “行列式 二元一次方程组 ”。对于鸡兔同笼问题还要加上一个限制:方程的解必须是正整数。
<div>/** * 鸡兔同笼问题。解法请 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() && (!delta_x.isZero() || !delta_y.isZero())) { return null; } int[] result = { delta_x.value() / delta.value(), delta_y.value() / delta.value() }; // 结果必须是整数 if (delta_x.value() % delta.value() != 0 || delta_y.value() % delta.value() != 0) { return null; } // 结果不能是负数 if (result[0] < 0 || result[1] < 0) { return null; } return result; } // 二阶行列式 private static class Matrix2 { private int[][] data; private Matrix2(int[][] data) { this.data = data; } public int value() { return data[0][0] * data[1][1] - data[0][1] * data[1][0]; } public boolean isZero() { return value() == 0; } } }
试试其它关键字
鸡兔同笼
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3