如何用C++求m行n列的矩形中有多少个矩形

本文介绍了一种使用排列组合模型计算给定网格中矩形数量的方法。通过定义组合数函数并运用递归方式实现,最终通过程序计算任意m行n列网格内的矩形总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先,我们要先分析这个问题
2.从问题中寻找尽量符合的数学模型
3.通过大量确定实例来判断该模型的误差是否在极小范围内,若不是,返回第2步
4.思考该数学模型如何用函数定义
5.写程序并运行之后Debug

1.分析问题,这个矩形是由m行n列组成,我们有矩形的特征可以发现,我们只要分别找到两行和两列就可以找到一个矩形,我们只要找到有多少个这样的组合就可以找到矩形个数
2.分析模型,排列组合模型明显适配该问题
3.验证模型,我们分别给m和n取不同的数字,进行简单验证
4.我们先定义函数comm(m,n)表示组合数Cmn(m在下,不会用公式见谅) .可以用组合数的一个性质,comm(m,n)=comm(m-1,n-1)+comm(m-1,n)(这个式子可以这样理解,我们从m个人中选n个人,假如选到其中一个人,那么我们要从剩下的m-1个人里再选n-1个人,如果选不到这个人,那么就要从剩下的m-1个人里选n个人。)。
想要简便的求出该组合数,我们可以由上一条组合数的性质结合递归函数来求解
5.这是我自己写的
#include
using namespace std;
int comm(int a, int b) {
if (a < b)
return 0;
else if (a == b || b == 0)
return 1;
else return comm(a - 1, b - 1) + comm(a-1, b );

}
int main() {
int a, b;
cout << “Please cin a :” << endl;
cin >> a;
cout<<“Please cin b:”<<endl;
cin >> b;
cout << comm(a, b);
return comm(a, b);

}
//在我看来,这个程序还需要在不同的范围内测试才可以判断误差,但是作者水平有限,现在暂时不会规范的测试,并且本文有哪些不足之处,还请多多指教。
(结尾说明一下,这个问题我之前看到过有人说用对角点来找矩形,但我试了1个多小时也没想出来,大家也可以思考一下,当然,这个问题的方法有很多,看大家自己能不能再找出来了)
感谢大家耐心看完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值