字符串全排列 递归与非递归

#include 
#include 

void swap(char * x,char * y)
{
    char tmp=*x;
    *x=*y;
    *y=tmp;
}
//递归算法
void permutation(char *s,int b,int e)
{
    if(b==e)
    {
        printf("%s\n",s);
    }
    int i;
    for(i=b;i<=e;i++)
    {
        swap(&s[b],&s[i]);
        permutation(s,b+1,e);
        swap(&s[b],&s[i]);
    }

}
void reverse(char *str,int i,int j)
{
    while(i=0;i--)
    {
        int e=j;
        if(s[i]=s[e])
                e--;
            swap(&s[i],&s[e]);
            reverse(s,i+1,j);
            return 1;
        }
    }
    return 0;
}
//非递归算法
void permutation2(char *s,int l)
{
    do
    {
        printf("%s\n",s,l);

    } while(get_next(s,l));
}

int main()
{
    char str[16]="abcde";
    //permutation(str,0,strlen(str)-1);
    permutation2(str,strlen(str));
    return 0;
}

 

你可能感兴趣的:(c,c++,数据结构)