N * M 网格中的矩形数量
给我们一个 N*M 的网格,在其中打印矩形的数量。 示例:
Input : N = 2, M = 2
Output : 9
There are 4 rectangles of size 1 x 1.
There are 2 rectangles of size 1 x 2
There are 2 rectangles of size 2 x 1
There is one rectangle of size 2 x 2.
Input : N = 5, M = 4
Output : 150
Input : N = 4, M = 3
Output: 60
我们已经讨论了计算 n×m 网格中的正方形数量, 让我们推导出矩形数量的公式。 如果网格是 1×1,则有 1 个矩形。 如果网格是 2×1,会有 2 + 1 = 3 个矩形 如果网格是 3×1,会有 3 + 2 + 1 = 6 个矩形。 我们可以说对于 N1 会有 N+(N-1)+(N-2)……+1 =(N)(N+1)/2 个矩形 如果我们在 N×1 上再加一列,首先我们在第二列的矩形会和第一列一样多, 然后我们就有了同样数量的 2×M 个矩形。 所以 N×2 = 3 (N)(N+1)/2 在推导出这个之后,我们可以说 对于 NM,我们将有(M)(M+1)/2(N)(N+1)/2 =M(M+1)(N)(N+1)/4 所以总矩形的公式将是 M(M+1)(N)(N+1)/4
。
组合逻辑:
N*M 网格可以表示为(N+1)条垂直线和(M+1)条水平线。 在一个矩形中,我们需要两个不同的水平线和两个不同的垂直线。 所以按照组合数学的逻辑,我们可以选择 2 条垂直线和 2 条水平线组成一个矩形。这些组合的总数是网格中可能的矩形数量。
NM 网格中的矩形总数:T1】N+1C2M+1C2T9】=(N (N+1)/2!)(M(M+1)/2!)=N (N+1) M *(M+1)/4*
C++
// C++ program to count number of rectangles
// in a n x m grid
#include <bits/stdc++.h>
using namespace std;
int rectCount(int n, int m)
{
return (m * n * (n + 1) * (m + 1)) / 4;
}
/* driver code */
int main()
{
int n = 5, m = 4;
cout << rectCount(n, m);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// JAVA Code to count number of
// rectangles in N*M grid
import java.util.*;
class GFG {
public static long rectCount(int n, int m)
{
return (m * n * (n + 1) * (m + 1)) / 4;
}
/* Driver program to test above function */
public static void main(String[] args)
{
int n = 5, m = 4;
System.out.println(rectCount(n, m));
}
}
// This code is contributed by Arnav Kr. Mandal.
Python 3
# Python3 program to count number
# of rectangles in a n x m grid
def rectCount(n, m):
return (m * n * (n + 1) * (m + 1)) // 4
# Driver code
n, m = 5, 4
print(rectCount(n, m))
# This code is contributed by Anant Agarwal.
C
// C# Code to count number of
// rectangles in N*M grid
using System;
class GFG {
public static long rectCount(int n, int m)
{
return (m * n * (n + 1) * (m + 1)) / 4;
}
// Driver program
public static void Main()
{
int n = 5, m = 4;
Console.WriteLine(rectCount(n, m));
}
}
// This code is contributed by Anant Agarwal.
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to count
// number of rectangles
// in a n x m grid
function rectCount($n, $m)
{
return ($m * $n *
($n + 1) *
($m + 1)) / 4;
}
// Driver Code
$n = 5;
$m = 4;
echo rectCount($n, $m);
// This code is contributed
// by ajit
?>
java 描述语言
<script>
// Javascript Code to count number
// of rectangles in N*M grid
function rectCount(n, m)
{
return parseInt((m * n * (n + 1) *
(m + 1)) / 4, 10);
}
let n = 5, m = 4;
document.write(rectCount(n, m));
</script>
输出:
150
本文由普拉纳夫供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用write.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。 如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处