📌  相关文章
📜  从分别平行于X和Y轴的N和M直线中可以计算矩形

📅  最后修改于: 2021-06-25 10:45:06             🧑  作者: Mango

给定两个整数NM ,其中N条直线平行于X轴M条直线平行于Y轴,任务是计算可以由这些直线形成的矩形的数量。
例子:

方法:
为了解决上述问题,我们需要观察到一个矩形是由4条直线形成的,其中相对的边是平行的,并且任意两个边之间的角度都是90度。因此,对于每个矩形,必须使两个边平行于X-轴和其他两侧必须与Y轴平行。

  • 选择两条平行于X轴的线的方式数目= N C 2 并且选择两条平行于Y轴的线的方式数= M C 2
  • 因此,矩形的总数= N C 2 * M C 2 = [N *(N – 1)/ 2] * [M *(M – 1)/ 2]

下面是上述方法的实现:

C++
// C++ Program to count number of
// rectangles formed by N lines
// parallel to X axis M lines
// parallel to Y axis
#include 
using namespace std;
 
// Function to calculate
// number of rectangles
int count_rectangles(int N, int M)
{
    // Total number of ways to
    // select two lines
    // parallel to X axis
    int p_x = (N * (N - 1)) / 2;
 
    // Total number of ways
    // to select two lines
    // parallel to Y axis
    int p_y = (M * (M - 1)) / 2;
 
    // Total number of rectangles
    return p_x * p_y;
}
 
// Driver Program
int main()
{
 
    int N = 3;
 
    int M = 6;
 
    cout << count_rectangles(N, M);
}


Java
// Java Program to count number of
// rectangles formed by N lines
// parallel to X axis M lines
// parallel to Y axis
class GFG{
 
// Function to calculate
// number of rectangles
static int count_rectangles(int N, int M)
{
    // Total number of ways to
    // select two lines
    // parallel to X axis
    int p_x = (N * (N - 1)) / 2;
 
    // Total number of ways
    // to select two lines
    // parallel to Y axis
    int p_y = (M * (M - 1)) / 2;
 
    // Total number of rectangles
    return p_x * p_y;
}
 
// Driver Program
public static void main(String[] args)
{
    int N = 3;
    int M = 6;
 
    System.out.print(count_rectangles(N, M));
}
}
 
// This code is contributed by sapnasingh4991


Python3
# Python3 program to count number of rectangles
# formed by N lines parallel to X axis
# and M lines parallel to Y axis
def count_rectangles(N, M):
 
    # Total number of ways to select
    # two lines parallel to X axis
    p_x = (N * (N - 1)) // 2
 
    # Total number of ways to select
    # two lines parallel to Y axis
    p_y = (M * (M - 1)) // 2
 
    # Total number of rectangles
    return p_x * p_y
 
# Driver code
N = 3
M = 6
 
print(count_rectangles(N, M))
 
# This code is contributed by himanshu77


C#
// C# Program to count number of
// rectangles formed by N lines
// parallel to X axis M lines
// parallel to Y axis
using System;
class GFG{
 
// Function to calculate
// number of rectangles
static int count_rectangles(int N, int M)
{
    // Total number of ways to
    // select two lines
    // parallel to X axis
    int p_x = (N * (N - 1)) / 2;
 
    // Total number of ways
    // to select two lines
    // parallel to Y axis
    int p_y = (M * (M - 1)) / 2;
 
    // Total number of rectangles
    return p_x * p_y;
}
 
// Driver Program
public static void Main()
{
    int N = 3;
    int M = 6;
 
    Console.Write(count_rectangles(N, M));
}
}
 
// This code is contributed by Code_mech


Javascript


输出:
45

时间复杂度: O(1)