当前位置: 代码迷 >> Java相关 >> 求助 组合数求解的算法
  详细解决方案

求助 组合数求解的算法

热度:169   发布时间:2010-05-27 04:47:17.0
求助 组合数求解的算法
整数计算,求结果----
避免溢出的同时,不利用BigInteger,的算法

例如:
C(100,50) = 100891344545564193334812497256

谢谢.

[ 本帖最后由 cool1122 于 2010-5-27 06:31 编辑 ]
搜索更多相关的解决方案: 算法  求解  

----------------解决方案--------------------------------------------------------
import javax.swing.JOptionPane;

public class Digui {

    public static void main(String[] args) {
        String output = "", number, number1;
        int n = 0, m = 0;
        long k = 0;
        number = JOptionPane.showInputDialog("请输入m的值!");
        number1 = JOptionPane.showInputDialog("请输入n的值!");
        m = Integer.parseInt(number);
        n = Integer.parseInt(number1);
        k = jie(m) / (jie(m - n) * jie(n));
        output = "C(m,n)的组合为:" + k;
        JOptionPane.showMessageDialog(null, output);
    }

    public static int jie(int n) {
        if (n == 1 || n == 0)
            return 1;
        else
            return n * jie(n - 1);
    }
}
----------------解决方案--------------------------------------------------------
以下是引用myhnuhai在2010-5-30 19:43:03的发言:

import javax.swing.JOptionPane;

public class Digui {

    public static void main(String[] args) {
        String output = "", number, number1;
        int n = 0, m = 0;
        long k = 0;
        number = JOptionPane.showInputDialog("请输入m的值!");
        number1 = JOptionPane.showInputDialog("请输入n的值!");
        m = Integer.parseInt(number);
        n = Integer.parseInt(number1);
        k = jie(m) / (jie(m - n) * jie(n));
        output = "C(m,n)的组合为:" + k;
        JOptionPane.showMessageDialog(null, output);
    }

    public static int jie(int n) {
        if (n == 1 || n == 0)
            return 1;
        else
            return n * jie(n - 1);
    }
}
溢出问题:
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Digui.main(Digui.java:13)
----------------解决方案--------------------------------------------------------
那个数太大了,double也太小了!阁下能有更好的办法吗?
----------------解决方案--------------------------------------------------------
这道题其实主要就是大数运算,百度一下答案多的是。
在本版中lampeter123提供的算法里面也有介绍的
----------------解决方案--------------------------------------------------------
  相关解决方案