鸡兔同笼问题

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

现有鸡、兔合装在一个笼子里。数头一共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;
相关推荐
草莓熊Lotso11 分钟前
【C语言】--指针超详解(二)
c语言·开发语言·经验分享·笔记
吃个早饭15 分钟前
第十六届蓝桥杯大赛软件赛C/C++大学B组部分题解
c语言·c++·蓝桥杯
এ᭄画画的北北25 分钟前
力扣-142.环形链表II
算法·leetcode
朝九晚五ฺ33 分钟前
【算法学习】递归、搜索与回溯算法(二)
数据结构·学习·算法·深度优先
短尾黑猫37 分钟前
【LeetCode 42】接雨水(单调栈、DP、双指针)
算法·leetcode
月亮被咬碎成星星43 分钟前
LeetCode[226] 翻转二叉树
算法·leetcode
KingQian20181 小时前
单片机嵌入式滤波算法库
单片机·嵌入式硬件·算法
minji...1 小时前
C语言 指针(9)
c语言·开发语言·数据结构
瑞雪兆丰年兮2 小时前
数学实验(Matlab语言环境和线性代数实验)
算法·数学建模·matlab·数学实验
烨然若神人~2 小时前
算法训练营第十一天|150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
算法