描述
給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。 我們假設對於小寫字母有'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
樣例輸出
abc
acbbac
bcacab
cba
code:
#include#include#include#include#include#include #include #include #include#include#include #include#include #include #define inf 0x3f3f3f3f
#define mmt(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const ll max=1000000;
using namespace std;
char c[10];
char s[10];
ll t;
bool vis[10];
void print()
}int main()
第二種方法是stl裡的全排函式——next_permutation()
#include#include#include#include#include#include #include #include #include#include#include #include#include #include #define inf 0x3f3f3f3f
#define mmt(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const ll max=1000000;
using namespace std;
char c[10];
char s[10];
ll t;
void print()
while(next_permutation(c+1,c+t+1));
}
python 按字典序全排列實現
def swap num,i,j for x in range j,i,1 tmp num x num x num x 1 num x 1 tmp def swapback num,i,j for x in range i,j tmp num x num x num x 1 num x 1 tmp ...
全排列 字典序排列
include includeusing namespace std define dig num 4 void cal int str int first int last cout endl if first last bool get f l int list int former int l...
字典序全排列
思路 從左向右找到不符合遞增規律的第乙個數,比如1,2,5,4,3中的這個數就是2,將其與其右面遞增序列中的比他大的最小數,比如在前面例子中的3互換,得到1,3,5,4,2,最後,將該數右邊的遞增序列排序,得到1,3,2,4,5即可。上面這個是求某乙個數的下乙個排列,而全排列只需按這個思路,將初始陣...