计算排列组合个数的 两个函数

//choices表示,可选择的域

//blanks:  从域中挑选的数量

//return:  组合个数

 

//有序,不唯一

__int64 ComputeSortedProbability(int choices,int blanks)
{
    vector<__int64> EleForComputePro;
    __int64 rP;
    int i=0;
    for (i=0;i<choices;i++)
    EleForComputePro.push_back(1);

    vector<__int64>::iterator it;

    for (i=1;i<blanks;i++ )
   {
      it=EleForComputePro.begin();
      it++;
      for (;it<EleForComputePro.end();it++)
   *it+=*(it-1); 
   } 
 

   for (rP=0, it=EleForComputePro.begin();it<EleForComputePro.end();it++)
      rP+=*it;
   return rP;

}

 

 

// 有序,唯一

__int64 ComSortedAndUniqueProbability(int choices, int blanks)
{
    __int64 rP;
   vector<__int64> suProbability;
   vector<__int64>::iterator it;
   suProbability.push_back(0);
   int i;
   for (i=0;i<choices;i++)
     suProbability.push_back(1);

   __int64 OriginalIt_1=0;
   for (i=1;i<blanks;i++)
  {
     it=suProbability.begin();
     OriginalIt_1=*(++it);
     *it=0;
     it++;
     for (;it<suProbability.end();it++)
     {
       __int64 itTemp=*it;
       *it=*(it-1)+OriginalIt_1;
       OriginalIt_1=itTemp;
     }
   }

   for (rP=0,it=suProbability.begin();it<suProbability.end();it++)
   rP+=*it;

   return rP;
}

 

//请尊重原创,转载注明出处

//http://blog.csdn.net/xiejvn/archive/2009/11/21/4848154.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值