//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