C語言版 輸出字串全排列
阿新 • • 發佈:2018-12-07
問題:輸入一字串(要求不存在重複字元),打印出該字串中字元中字元的所有排列。
例如:輸入”abc”,輸出結果為abc, acb, bac, bca, cab和cba。
遇到這個問題,筆者搜了一下,網上有很多答案,但似乎沒有我想要的簡單一點的純C語言編寫的,所以自己動手寫了一下:
#include <stdio.h> #include <string.h> int main() { void func(char a[],int k); char a[26]; scanf("%s",&a); func(a,0); return 0; } void func(char a[],int k){ int i ,temp; if(k == strlen(a)){ printf("%s ",a); } for(i=k;i<strlen(a);i++){ temp = a[k]; a[k] = a[i]; a[i] = temp; func(a,k+1); temp = a[k]; a[k] = a[i]; a[i] = temp; } }
輸入:abcd
輸出: