[求助]排列组合的问题
大家好,我做个应用程序碰到了点问题. 我要从m个数字(0,1,2,3、、、m-1)中任意选n个数,其中(n>=1&&n<=m-1),并将每个组合的数字列举出来. 小弟想了两天了,但是还没有眉目. 恳请大家帮帮忙.
谢谢!
const int m=..;
struct Data
{
int num;
bool skip;
};
int Array[m]={0,,,,,m-1};
Data data[m];
for(int i=0;i<m;++i)
{
data[i].num=Array[i];
data[i].skip=false;
}
srand(unsigned int(time(NULL)));
int n=random(m)+1;
for(int OutNum=0;OutNum<n;++OutNum)
{
int num=random(m)+1;
while(data[num].skip)
{
num=random(m)+1;
}
data[num].skip=true;
cout<<num;
}
呵呵, 有点太过特殊了呵
不过,如果是不连续的数,就得改一下条件了,挨个判断以前输出过的数
我刚做的,看看有没有毛病