全排列 & 子集生成

STL风格的全排列函数与子集生成函数。

子集生成代码:

template
void get_subset(T *left,T *right)
{
//数组的左指针和右指针
    static int len=-1;
    static bool *pos;
    if(len==-1)
    {
        len=right-left;
        pos=new bool[len];
    }
//len代表序列长度
    if(left==right)
    {
        for(int i=0; i

枚举全排列:

template
void get_permutation(T *left,T *right)
{
//数组的左指针和右指针
    static int len=-1;
    if(len==-1)
    {
        len=right-left;
    }
//len代表序列长度
    if(left+1==right)
    {
        for(T* it=right-len; it!=right; ++it)
        {
            std::cout<<*it<<' ';
        }
        std::cout<

 

你可能感兴趣的:(全排列 & 子集生成)