POJ 1256

来源:互联网 发布:网络经营食品所需资质 编辑:程序博客网 时间:2024/05/31 18:42
//自定义cmp函数用于sort和next_permutation#include <stdio.h>#include <string>#include <cstring>#include <queue>#include <algorithm>#include <functional>#include <vector>#include <sstream>#include <iomanip>#include <math.h>#include <iostream>#include <sstream>#include <time.h>#include <stack>#include <set>#include <map>#include <time.h>#include <bitset>using namespace std;char str[20];bool cmp(char a,char b){    if(a <= 'Z' && a >= 'A' && b <= 'Z' && b >= 'A')        return a < b;    if(a <= 'z' && a >= 'a' && b <= 'z' && b >= 'a')        return a < b;    if(a <= 'Z' && a >= 'A' && b <= 'z' && b >= 'a')        return a + 32 <= b;    if(a<='z' && a >='a' && b <= 'Z' && b >= 'A')        return a < (b + 32);    return false;}int main(){    ios_base::sync_with_stdio(false);    cin.tie(0);    int T;    cin>>T;    while (T--)    {        cin>>str;        int len=strlen(str);        sort(str,str+len,cmp);        do        {            cout<<str<<endl;        } while(next_permutation(str,str+len,cmp));    }    return 0;}//dfs搜索#include <stdio.h>#include <string>#include <cstring>#include <queue>#include <algorithm>#include <functional>#include <vector>#include <sstream>#include <iomanip>#include <math.h>#include <iostream>#include <sstream>#include <time.h>#include <stack>#include <set>#include <map>#include <time.h>#include <bitset>using namespace std;char str[20],cstr[20];int len;bool Visited[20];bool cmp(char a,char b){    if(a <= 'Z' && a >= 'A' && b <= 'Z' && b >= 'A')        return a < b;    if(a <= 'z' && a >= 'a' && b <= 'z' && b >= 'a')        return a < b;    if(a <= 'Z' && a >= 'A' && b <= 'z' && b >= 'a')        return a + 32 <= b;    if(a<='z' && a >='a' && b <= 'Z' && b >= 'A')        return a < (b + 32);    return false;}void dfs(int x){    if (x==len)    {        for (int i=0;i<len;i++)            cout<<cstr[i];        cout<<endl;    }    else    {        for (int i=0;i<len;i++)        {            if (!Visited[i])            {                cstr[x]=str[i];                Visited[i]=true;                dfs(x+1);                Visited[i]=false;                while (i+1<len&&str[i]==str[i+1]) i++;            }        }    }}int main(){    ios_base::sync_with_stdio(false);    cin.tie(0);    int T;    cin>>T;    while (T--)    {        memset(Visited,false,sizeof(Visited));        cin>>str;        len=strlen(str);        sort(str,str+len,cmp);        dfs(0);    }    return 0;}
0 0