今天刷题碰到一个要用到全组合的问题,下面的代码是用递归写的,留着以后复习一下
#include<iostream>
using namespace std;
void full_combine(int *data,int cur,int len)
{
if(cur==len)
{
for(int i=0;i<len;i++)
{
cout<<data[i];
}
cout<<endl;
}
else
{
data[cur]=1;
full_combine(data,cur+1,len);
data[cur]=0;
full_combine(data,cur+1,len);
}
}
int main()
{
int data[4];
full_combine(data,0,4);
system("PAUSE");
return 0;
}
这是一种间接的方式,程序输出的都是01,如果某个下标对应的是1,则表示该下标对应的元素在组合里面
如果某个下标对应的是0,则表示该下标对应的元素不在组合里面
例如一个数组data有4个元素,0011就表示 组合包括(data[2],data[3])。
上面程序输出的结果如下,本次实验是希望找出4个元素对应的全组合