鸡兔同笼问题

鸡兔同笼问题是这样一个问题:

现有鸡、兔合装在一个笼子里。数头一共100个头,数脚一共300只脚。问有多少只鸡多少只兔?

在这里讨论这个问题的解法当然太小儿科了。但是y_tab这个C语言解释器只提供了1维数组。如果需要用到2维数组时,该怎么做?

现在演示用行列式和克莱姆法则求解这个问题。

方程组:

ax +by =e;

cx +dy =f;

系数矩阵为:

2 4 300

1 1 100

写成数组是,

a[] = {

2, 4, 300,

1, 1, 100

};

func i(row, col) {return row*3+col;}

函数i()对2维数组作下标转换。所以这道题的系数矩阵就是:

a[i(0,0)] a[i[0,1)] a[i(0,2)]

a[i(1,0)] a[i(1,1)] a[i(1,2)]

所以求解是,

func det(a,b,c,d) {return a*d -b*c;}

detx= det(a[i(0,2)], a[i(0,1)], a[i(1,2)], a[i(1,1)]);

dety= det(a[i(0,0)], a[i(0,2)], a[i(1,0)], a[i(1,2)]);

deta= det(a[i(0,0)], a[i(0,1)], a[i(1,0)], a[i(1,1)]);

print "x,y:", detx/deta, dety/deta;

答案是50 50。

clike 复制代码
a[] = {
2, 4, 300,
1, 1, 100
};
func i(row, col) {return row*3+col;}

func det(a,b,c,d) {return a*d -b*c;}

detx= det(a[i(0,2)], a[i(0,1)], a[i(1,2)], a[i(1,1)]);
dety= det(a[i(0,0)], a[i(0,2)], a[i(1,0)], a[i(1,2)]);
deta= det(a[i(0,0)], a[i(0,1)], a[i(1,0)], a[i(1,1)]);

print "x,y:", detx/deta, dety/deta;
相关推荐
小新学习屋16 分钟前
《剑指offer》-数据结构篇-树
数据结构·算法·leetcode
好心的小明22 分钟前
【深度之眼机器学习笔记】04-01-决策树简介、熵,04-02-条件熵及计算举例,04-03-信息增益、ID3算法
笔记·算法·决策树
程序员编程指南1 小时前
Qt 网络编程进阶:RESTful API 调用
c语言·网络·c++·qt·restful
程序员编程指南1 小时前
Qt XML 与 JSON 数据处理方法
xml·c语言·c++·qt·json
lqjun08272 小时前
相机内外参矩阵:从3D世界坐标到2D像素坐标变换
数码相机·3d·矩阵
恣艺2 小时前
LeetCode 1074:元素和为目标值的子矩阵数量
算法·leetcode·矩阵
Alfred king2 小时前
面试150 搜索二维矩阵
线性代数·矩阵·二分查找·数组
queenlll3 小时前
P1064 [NOIP 2006 提高组] 金明的预算方案 题解
算法
程序员编程指南3 小时前
Qt 网络编程进阶:网络安全与加密
c语言·网络·c++·qt·web安全
WildBlue3 小时前
前端算法秘籍:BFS 算法的 JS 魔法之旅🤩
前端·javascript·算法