鸡兔同笼问题

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

现有鸡、兔合装在一个笼子里。数头一共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;
相关推荐
算AI7 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
老歌老听老掉牙8 小时前
平面旋转与交线投影夹角计算
python·线性代数·平面·sympy
似水এ᭄往昔8 小时前
【C语言】文件操作
c语言·开发语言
hyshhhh9 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
蒙奇D索大9 小时前
【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
c语言·数据结构·考研·改行学it
杉之10 小时前
选择排序笔记
java·算法·排序算法
烂蜻蜓10 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
OYangxf10 小时前
图论----拓扑排序
算法·图论
我要昵称干什么10 小时前
基于S函数的simulink仿真
人工智能·算法
AndrewHZ10 小时前
【图像处理基石】什么是tone mapping?
图像处理·人工智能·算法·计算机视觉·hdr