給一個字符串包含大小寫字符,規定'A'<'a'<'B'<'b'<...<'Z'<'z',求該字符串的全排列。
用裸的dfs+map判重 寫了一遍超時了,那種機智的dfs方法沒有怎麼看懂。。
最開始用的set+next_permutation,太年輕,也超時了。。。
運用一個next_permutation()函數即可,頭文件
注意要先將字符串sort一遍,然後next_permutation()也要把比較函數cmp傳進去,原來都不知道可以三個參數的。。
#include#include #include #include #include #include using namespace std; char s[20]; bool cmp(char a,char b) { if(a>='a'&&a<='z'&&b>='a'&&b<='z') return a='A'&&a<='Z'&&b>='A'&&b<='Z') return a='A'&&a<='Z') a+=32; if(b>='A'&&b<='Z') b+=32; return a
用裸的dfs+map判重 寫了一遍超時了,那種機智的dfs方法沒有怎麼看懂。。
最開始用的set+next_permutation,太年輕,也超時了。。。