鸡兔同笼问题

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

现有鸡、兔合装在一个笼子里。数头一共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;
相关推荐
wuminyu6 小时前
专家视角看Java多态性的底层基石vtable(虚函数表)构建过程解析
java·linux·c语言·jvm·c++
生物信息与育种6 小时前
全基因组重测序及群体遗传与进化分析技术服务指南
人工智能·深度学习·算法·数据分析·r语言
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题】【Java基础篇】第23题:ConcurrentHashMap的底层原理是什么
java·开发语言·算法·哈希算法·散列表·hash
葳_人生_蕤6 小时前
hot100——回溯和DFS、BFS
算法·深度优先
Eloudy6 小时前
Steane码的稳定子的生成元集计算过程
算法
MegaDataFlowers6 小时前
快速算法验证流水线
算法
Aaron15886 小时前
27DR/47DR/67DR技术对比及应用分析
人工智能·算法·fpga开发·硬件架构·硬件工程·信息与通信·基带工程
alphaTao6 小时前
LeetCode 每日一题 2026/4/27-2026/5/3
算法·leetcode
穿越临界点6 小时前
动态规划(DP)
算法·动态规划·贝尔曼
leoufung6 小时前
LeetCode 50. Pow(x, n):从 O(n) 到 O(log n) 的快速幂彻底搞懂
算法·leetcode·职场和发展