题解 | #全排列#
全排列
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); }