Fastest way to generate binomial coefficients

后端 未结 11 1777
[愿得一人]
[愿得一人] 2020-12-13 02:20

I need to calculate combinations for a number.

What is the fastest way to calculate nCp where n>>p?

I need a fast way to generate binomial coefficients for a

11条回答
  •  情话喂你
    2020-12-13 03:18

    Time Complexity : O(denominator) Space Complexity : O(1)

    public class binomialCoeff {
        static double binomialcoeff(int numerator, int denominator) 
        { 
            double res = 1; 
            //invalid numbers
            if (denominator>numerator || denominator<0 || numerator<0) {
                res = -1;
                return res;}
            //default values
            if(denominator==numerator || denominator==0 || numerator==0)
                return res;
    
    
            // Since C(n, k) = C(n, n-k) 
            if ( denominator > (numerator - denominator) ) 
                denominator = numerator - denominator;
    
    
            // Calculate value of [n * (n-1) *---* (n-k+1)] / [k * (k-1) *----* 1] 
            while (denominator>=1)
            { 
    
            res *= numerator;
            res = res / denominator; 
    
            denominator--;
            numerator--;
            } 
    
            return res; 
        } 
    
        /* Driver program to test above function*/
        public static void main(String[] args) 
        { 
            int numerator = 120; 
            int denominator = 20; 
            System.out.println("Value of C("+ numerator + ", " + denominator+ ") "
                                    + "is" + " "+ binomialcoeff(numerator, denominator)); 
        } 
    
    }
    

提交回复
热议问题