| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3004 人关注过本帖
标题:求C(N, M),即求M个数中选N个数的组合方案数。 AC不了啊
只看楼主 加入收藏
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
求C(N, M),即求M个数中选N个数的组合方案数。 AC不了啊
输入
第一行一个正整数T (T<=10), 表示有T组测试数据。第二行~第T+1行,每行有2个正整数N,M (1<=N, M<=20)。
输出
对于每组输入N,M,输出一行,该行有一个数,为C(N, M)值。
样例输入2
3 5
1 20
样例输出
10
20
程序代码:
#include <stdio.h>
int s[5][5] = {0};
int fun(int a, int b)
{
    if (a == b || 0 == b)    return s[a][b] = 1;
    if (s[a][b])    return s[a][b];
    return s[a][b] = fun(a - 1, b - 1) + fun(a - 1, b);
}
int main()
{
    int N;
    int m, n;
    scanf("%d", &N);
    while (N--)
    {
        scanf("%d%d", &m, &n);
        if (m > n / 2) m = n - m;
        printf("%d\n", fun(n, m));
    }
    return 0;
}
搜索更多相关主题的帖子: 1020 测试 正整数 color 
2012-12-27 23:35
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
我明白了,数据超范围了。。。


[fly]存在即是合理[/fly]
2012-12-27 23:43
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
改成 int s[21][21].....


[fly]存在即是合理[/fly]
2012-12-27 23:56
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
收藏
得分:7 

浪费分数哇
2012-12-27 23:59
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:7 
接分

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-28 08:07
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
收藏
得分:7 
看了大半天终于知道自己怎么郁闷了
C(N, M),即求M个数中选N个数
fun(a,b)求a个数中选b个数
顺序刚好反的...

好好学习,天天向上
2012-12-28 08:40
戒不悔
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-11-5
收藏
得分:0 
回复 6楼 冰冻零点
#include<stdio.h>
int main()
{
    int T;
    while(1)
    {
        scanf("%d",&T);
        if(T>0&&T<=10)
            break;
    }
    int N,M;
    while(T--)
    {
        int i,j,a[10]={0},count=0,c;
        while(1)
        {
            scanf("%d%d",&N,&M);
            if(N>0&&N<=20&&M>0&&M<=20&&M>=N)
                break;
        }
        a[0]=1;
        for(i=M;i>=M-N+1;i--)
        {
            c=0;
            for(j=0;j<=count;j++)
            {
                a[j]=a[j]*i+c;
                c=a[j]/10000;
                a[j]%=10000;
            }
            if(c>0)
                a[++count]=c;
        }
        int q[10],r=0,d=0;
        for(i=count;i>=0;i--)
            q[d++]=a[i];
        for(i=2;i<=N;i++)
        {
            r=0;
            for(j=0;j<=count;j++)
            {
                int temp=q[j]+r*10000;                    
                q[j]=temp/i;
                r=temp%i;
            }
        }
        d=0;
        for(i=0;i<=count;i++)
            if(q[i]!=0||d==1)
            {
                printf("%d",q[i]);
                d=1;
            }
        printf("\n");
    }
    return 0;
}
2015-11-05 13:35
戒不悔
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-11-5
收藏
得分:0 
大阶级数处理
2015-11-05 13:36
快速回复:求C(N, M),即求M个数中选N个数的组合方案数。 AC不了啊
数据加载中...
 
   



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

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