鸡兔同笼问题

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

现有鸡、兔合装在一个笼子里。数头一共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;
相关推荐
为何创造硅基生物4 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好4 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅5 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
jolimark5 小时前
C语言自学攻略:小白入门三步走
c语言·编程入门·学习路线·实践项目·自学攻略
2601_957787586 小时前
矩阵运营的技术底座:为什么“一体化系统“正在取代“工具拼装“
人工智能·矩阵·矩阵运营
cen__y6 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
社交怪人7 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
x_yeyue7 小时前
三角形数
笔记·算法·数论·组合数学
卢锡荣7 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
念何架构之路8 小时前
Go语言加密算法
数据结构·算法·哈希算法