首页 > 试题广场 >

计算组合数

[编程题]计算组合数
  • 热度指数:1092 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
对于给定的非负整数r和n(r≤n),请编写程序计算组合数C(r,n) = n! / r! / (n-r)!。
(本题目用于测试的所有用例,都保证结果小于231-1)
示例1

输入

2,3

输出

3

说明

C_{3}^{2} = 3
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * calculate combination Number
     * @param r int整型 
     * @param n int整型 
     * @return int整型
     */
    public int combination (int r, int n) {
        // write code here
         
       double  a = 1;
        int t = r;
        double b = 1;
        int c = n-r;
        if (r==0||c==0 ){
            return 1;
        }else if (r==1|| c==1){
            return n;
        }else
        if (c<r){
         r = c;
         a = r;
        }
        for (int i = 0; i < t; i++) {
            a*=r;
            b*=n;

            r--;
            n--;
        }

        double v = b / a;
        System.out.println(b);
        int v1 = (int) v;
        return v1;
    }
}
发表于 2021-10-22 21:34:06 回复(0)