| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 894 人关注过本帖
标题:求助 组合数求解的算法
只看楼主 加入收藏
cool1122
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-27
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
求助 组合数求解的算法
整数计算,求结果----
避免溢出的同时,不利用BigInteger,的算法

例如:
C(100,50) = 100891344545564193334812497256

谢谢.

[ 本帖最后由 cool1122 于 2010-5-27 06:31 编辑 ]
搜索更多相关主题的帖子: 算法 求解 
2010-05-27 04:47
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:6 
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);
    }
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-05-30 19:43
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:6 
以下是引用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)

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-05-31 08:12
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:0 
那个数太大了,double也太小了!阁下能有更好的办法吗?

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-01 12:21
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:6 
这道题其实主要就是大数运算,百度一下答案多的是。
在本版中lampeter123提供的算法里面也有介绍的
2010-06-02 10:02
快速回复:求助 组合数求解的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016749 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved