c++的求解长方形问题

内容简介:C++回文数及素数问题计算方法回文数及素数问题计算方法主要介绍了C++回文数及素数问题计算方法,可实现一定范围内的素数与回文数运算功能,涉及C++字符串遍历与数字数学运算的相关技巧,需要的朋友可以参考下本文实例讲述了C++回文数及素数问题计算方法。分享给大家供大家参考,具体如下: /** 作 者: 刘同宾* 完成日期:2012 年 11 月 16 日* 版 本 号:v1.0** 输入描述: 编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数,isPalindrome()用于判断参数是否是回文数,调用函数回答以下问题(可以分别编制几个程序完成,也可以在一个main()...

}

编程之美一道简单的热身题,活生生的组合数学例子啊。

      在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子,每个石子都只能放在网格的交叉点上。问在最优的摆放方式下,最多能找到多少四边平行于坐标轴的长方形,它的四个角上都恰好放着一枚石子。

  输入文件包含多组测试数据。第一行,给出一个整数T(1 ≤ T ≤ 100)为数据组数。接下来依次给出每组测试数据。每组数据为三个用空格隔开的整数 N,M,K。(0 ≤ K ≤ N * M,0 < N, M ≤ 30000)。

  对于每组测试数据,输出一行"Case #X: Y",其中X表示测试数据编号,Y表示最多能找到的符合条件的长方形数量。所有数据按读入顺序从1开始编号。

  考虑对于一个布满点的网格(x行,Y列),所有的矩形总数为组合数C(2,x)*C(2,y)。但k不一定刚好就能布满整个网格,所以我们先找到在网格中最大能形成的长方形矩阵的长y和宽x,剩余石子为r,则有k = x * y + r , 最大能形成的长方形矩阵最多有C(x,2)*C(y,2)个矩形,剩余石子 r 以一排或一列的形式,靠在大矩形短的一边要注意是否到达边界),则多增加的矩形数为 C(2,r)*y (y为长边的点数)。 枚举x与y,计算出C(x,2)*C(y,2)+ C(r,2)*y的最大值。

}

我要回帖

更多关于 计算长方形面积的c程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信