面试题:长方形个数计算
给定一个高度和宽度组成的网格,返回该网络中总共的长方形(不包括正方形)的个数。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;
}
}
}

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
2009-09-01 Disable UTC in Ubuntu
2009-09-01 Disable UTC in Ubuntu