📜  具有共 n 个点且共线的不同直线的计数

📅  最后修改于: 2021-10-23 08:25:18             🧑  作者: Mango

平面中有“n”个点,其中“m”个点共线。可以形成多少条不同的直线?
例子:

Input : n = 3, m = 3
Output : 1
We can form only 1 distinct straight line
using 3 collinear points

Input : n = 10, m = 4
Output : 40

该方法的实现如下:

C++
// CPP program to count number of straight lines
// with n total points, out of which m are
// collinear.
#include 
 
using namespace std;
  
// Returns value of binomial coefficient
// Code taken from https://goo.gl/vhy4jp
int nCk(int n, int k)
{
 
    int C[k+1];
    memset(C, 0, sizeof(C));
  
    C[0] = 1;  // nC0 is 1
  
    for (int i = 1; i <= n; i++)
    {
 
        // Compute next row of pascal triangle
        // using the previous row
        for (int j = min(i, k); j > 0; j--)
 
            C[j] = C[j] + C[j-1];
    }
 
    return C[k];
}
 
  
/* function to calculate number of straight lines
   can be formed */
int count_Straightlines(int n,int m)
{
 
    return (nCk(n, 2) - nCk(m, 2)+1);
 
}
  
 
/* driver function*/
int main()
{
 
    int n = 4, m = 3 ;
    cout << count_Straightlines(n, m);
    return 0;
 
}


Java
// Java program to count number of straight lines
// with n total points, out of which m are
// collinear.
import java.util.*;
import java.lang.*;
 
public class GfG  {
 
    // Returns value of binomial coefficient
    // Code taken from https://goo.gl/vhy4jp
    public static int nCk(int n, int k)
    {
        int[] C = new int[k + 1];
 
        C[0] = 1; // nC0 is 1
 
        for (int i = 1; i <= n; i++)  {
 
            // Compute next row of pascal triangle
            // using the previous row
            for (int j = Math.min(i, k); j > 0; j--)
                C[j] = C[j] + C[j - 1];
        }
 
        return C[k];
    }
 
 
    /* function to calculate number of straight lines
    can be formed */
    public static int count_Straightlines(int n, int m)
    {
        return (nCk(n, 2) - nCk(m, 2) + 1);
    }
 
 
    // Driver function
    public static void main(String argc[])
    {
        int n = 4, m = 3;
        System.out.println(count_Straightlines(n, m));
    }
 
    // This code is contributed by Sagar Shukla
}


Python
# Python program to count number of straight lines
# with n total points, out of which m are
# collinear.
 
# Returns value of binomial coefficient
# Code taken from https://goo.gl/vhy4jp
def nCk(n, k):
     
    C = [0]* (k+1)
     
    C[0] = 1 # nC0 is 1
 
    for i in range(1, n+1):
         
        # Compute next row of pascal triangle
        # using the previous row
        j = min(i, k)
         
        while(j>0):
             
            C[j] = C[j] + C[j-1]
            j = j - 1
             
    return C[k]
 
#function to calculate number of straight lines
# can be formed
def count_Straightlines(n, m):
     
    return (nCk(n, 2) - nCk(m, 2)+1)
 
# Driven code
n = 4
m = 3
print( count_Straightlines(n, m) );
 
# This code is contributed by "rishabh_jain".


C#
// C# program to count number of straight
// lines with n total points, out of
// which m are collinear.
using System;
 
public class GfG {
 
    // Returns value of binomial coefficient
    // Code taken from https://goo.gl/vhy4jp
    public static int nCk(int n, int k)
    {
        int[] C = new int[k + 1];
 
        // nC0 is 1
        C[0] = 1;
 
        for (int i = 1; i <= n; i++)
        {
 
            // Compute next row of pascal triangle
            // using the previous row
            for (int j = Math.Min(i, k); j > 0; j--)
                C[j] = C[j] + C[j - 1];
        }
 
        return C[k];
    }
 
 
    // Function to calculate number of
    // straight lines can be formed
    public static int count_Straightlines(int n, int m)
    {
        return (nCk(n, 2) - nCk(m, 2) + 1);
    }
 
 
    // Driver Code
    public static void Main(String []args)
    {
        int n = 4, m = 3;
        Console.WriteLine(count_Straightlines(n, m));
    }
 
 
}
 
// This code is contributed by vt_m.


PHP
 0; $j--)
            $C[$j] = $C[$j] + $C[$j-1];
    }
    return $C[$k];
}
 
 
// function to calculate
// number of straight lines
// can be formed
function count_Straightlines($n, $m)
{
 
    return (nCk($n, 2) - nCk($m, 2) + 1);
 
}
 
// Driver Code
$n = 4;
$m = 3;
echo(count_Straightlines($n, $m));
 
// This code is contributed
// by Prasad Kshirsagar
?>


Javascript


输出:

4

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程