首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求C(N, M),即求M个数中选N个数的组合方案数,该如何解决

2012-03-26 
求C(N, M),即求M个数中选N个数的组合方案数源代码是这样的,哪里错啦,怎么输不出正解啊??求指点。#includei

求C(N, M),即求M个数中选N个数的组合方案数
源代码是这样的,哪里错啦,怎么输不出正解啊??求指点。

#include<iostream>
using namespace std;
int main()
{
int n,i;
long int a,b,sub,sum;
cin>>n;
while(n--)
{
cin>>a>>b;//N=a,M=b
for(i=0;i<a-1;i++)
a*=(a-1);
for(i=0;i<b-1;i++)
b*=(b-1);
sub=b-a;
for(i=0;i<sub-1;i++)
sub*=(sub-1);
sum=b/(a*sub);
cout<<sum<<endl;
}
return 0;
}

[解决办法]
#include<iostream>
using namespace std;
int main()
{
 int n,i;
 long int a,b,sub,sum;
 cin>>n;
 while(n--)
 {
cin>>a>>b;//N=a,M=b
int a1 = a, b1 = b;
 for(i=a-1;i>0;i--)
 a1*=i;
 for(i=b-1;i>0;i--)
 b1*=i;
 sub=b-a;
 for(i=sub-1;i>0;i--)
 sub*=i;
 sum=b1/(a1*sub);
 cout<<sum<<endl;
 }
 return 0;
}
[解决办法]

C/C++ code
#include <iostream>using namespace std;int main(){    int n,i;    long int a,b,sum;    cin>>n;    while(n--)    {        cin>>a>>b;//N=a,M=b        sum = 1;        for(i = b; i >= b - a; --i)            sum *= i;        cout<<sum<<endl;    }    getchar();    return 0;} 

热点排行