面试题:长方形个数计算
2015-07-13 14:37
639 查看
给定一个高度和宽度组成的网格,返回该网络中总共的长方形(不包括正方形)的个数。eg:width=3,height=3。 我们不妨考虑一个3*4的网格。首先我们考虑在什么情况下,出来的是正方形。当长和宽相等时,出来的就是正方形了。撇开正方形不考虑,一个3*4的网格中有多少个1*1不同的格子呢,很简单,就是12个。那有多少个1*2的格子呢?想一下,比如在第一行,应该3个,即4-2+1个,那总共有3*3即9个1*2的方格。同样的道理,应该有多少个2*1的方格呢?答案是(3-2+1)*4,即8个。 继续深入,有多少个2*2的网格呢?根据上面的规律应该是(3-2+1)*(4-2+1),即6个。那我们得到的规律是,对于一个m*n的网格中i*j网格的个数为(m-i+1)*(n-j+1)个。 好了,那就很简单了,得到这题的答案:
using system; using system.collections.generic; using system.linq; using system.text; namespace consoleapplication1 { class program { static void main(string[] args) { console.writeline(rectanglenum(5, 6)); } static int rectanglenum(int m, int n) { int num = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { num += i == j ? 0 : (m - i ) * (n - j); } } return num; } } }
相关文章推荐
- 面试题总结7
- PHP面试准备:Mysql语句
- 2015年程序员生存报告,苦还是不苦
- 黑马程序员_多线程
- 黑马程序员——Java要点笔记——面向对象(三)
- 程序员的出路
- 面试题
- 黑马程序员——Java要点笔记——面向对象(二)
- 黑马程序员 集合 4
- 程序员每天-4
- 面试28字符串的排列组合
- 最难回答的四个面试问题
- 黑马程序员-oc基础-NSDate基本用法
- 黑马程序员-oc基础-集合的总结
- 黑马程序员-oc基础-集合NSDictionary,NSMutableDictionary
- 黑马程序员-oc基础-集合NSSet,NSMutableSet
- 黑马程序员-oc基础-oc中之集合NSArray,NSMutableArray
- 黑马程序员-oc基础-NSString和NSMutableString区别
- 黑马程序员-oc基础-Foundation中NSString类型的一些用法
- 面试趣味智力问题收集与整理