/*題目描述:
給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。
我們假設對於小寫字母有'a' < 'b' < ... < 'y' < 'z',而且給定的字串中的字母已經按照從小到大的順序排列。
輸入:輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。
輸出:輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。字母序如下定義:
已知s = s1s2...sk , t = t1t2...tk,則s < t 等價於,存在p (1 <= p <= k),使得
s1 = t1, s2 = t2, ..., sp - 1 = tp - 1, sp < tp成立。
樣例輸入:
abc樣例輸出:
abcacb
bacbca
cabcba
每組樣例輸出結束後要再輸出乙個回車。*/
#include#include#include#include#define maxsize 10
using namespace std;
/*全排列問題:使用hash陣列,下標表示數字,內容為true/false表示是否已探測過
遞迴演算法:假設0到(index-1)已經滿足,討論與index位的情況
遞迴基:index = n 時,說明前n位均已滿足
*/bool hasha[maxsize] = ;
char origin[maxsize];
char result[maxsize] = ; //若不設定全域性變數,就要用引數傳遞
void f(int len, int index)
else }}
}int main()
int len = strlen(origin);
f(len, 0);
cout << endl; //一組資料輸出完,額外有乙個空行
}
return 0;
}
符合個人習慣的**
#include #include#include#includeusing namespace std;
bool hash[10]=;
char str[10];
char ret[10];
void dfs(int len,int index)
else
} }
}int main()
int len=strlen(str);
dfs(len,0);
printf("\n");
} return 0;
}
九度 1120 全排列
題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出 輸出這個字串的所有排列方式,每行乙個排列。要求字母...
九度題目1120
題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出 輸出這個字串的所有排列方式,每行乙個排列。要求字母...
46 全排列 全排列 遞迴
遞迴的時候每次確定乙個位置的數字 nums陣列在遞迴過程中分為左右兩部分,左邊部分是已經確定好的部分,而右邊是待確定數字的部分。每次都嘗試用當前位置右邊的數字來交換當前數字以確定當前數字。題目可以使用collections來優化。詳見 class solution 遞迴過程中每次確定乙個位置的數,遞...