题目要求是按照给出的字母顺序进行全排列并非是ASCII的顺序 可以用STL的全排列函数 这道题可以对全排列函数有更深一步的理解 那就是构造cmp函数等同sort一样 给出明确的大小顺序就可以比较
#include <iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int cmp(char a,char b) { if(a>='a'&&b>='a') return a<b; if(a<='Z'&&b<='Z') return a<b; if(a>='a'&&b<='Z') return a<b+32; if(a<='Z'&&b>='a') return a+32<=b; } int main() { char c[15];int len,t; scanf("%d",&t); while(t--) { scanf("%s",c); len=strlen(c); sort(c,c+len,cmp); do puts(c); while(next_permutation(c,c+len,cmp)); } return 0; }