题解 | #全排列#

全排列

https://www.nowcoder.com/practice/5632c23d0d654aecbc9315d1720421c1

#include <stdio.h>
#include <string.h>
void change(char *s,int a,int b,int l){
    char t;
    t=s[a];
    s[a]=s[b];
    s[b]=t;
    for(int i=a+1;i<l-1;i++){
        for(int j=i+1;j<l;j++){
            if(s[i]>s[j])
            {
                t=s[i];
                s[i]=s[j];
                s[j]=t;
            }
        }
    }
}
void f(char *s,int start,int l){
    char t;
    char a[11];
    
    if(start==l){
        printf("%s\n",s);
    }
    for(int i=start;i<l;i++){
        strcpy(a, s);
        /*t=s[i];
                s[i]=s[start];
                s[start]=t;*/
        change(s, start, i, l);
        f(s,start+1,l);
        strcpy(s, a);
        //change(s, start, i, l);
        t=s[i];
                s[i]=s[start];
                s[start]=t;
    }
}
int main() {
    int l;
    char a[11]={'\0'};
    scanf("%s",a);   
    l=strlen(a);
    f(a,0,l);
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务