ecnu 3023 Enum

#include<bits/stdc++.h>
using namespace std;

int c[60];
char s[20];
char sub[20];

int id(char x){
    if(x>='a'&&x<='z')return 26+x-'a';
    else return x-'A';
}

char ch(int x){
    if(x<26)return 'A'+x;
    else return 'a'+x-26;
}

void printsubset(int u=0,int l=0){
    printf("%s\n",sub);
    for(int i=u+1;i<52;i++){
        if(c[i]){
            sub[l]=ch(i);
            sub[l+1]=0;
            printsubset(i,l+1);
        }
    }
}

int main(){
    int t;
    scanf("%d",&t);
    for(int u=0;u<t;u++){
        scanf("%s",s);
        printf("case #%d:\n",u);
        memset(c,0,sizeof(c));
        for(int i=0;s[i];i++){
            c[id(s[i])]=1;
        }
        for(int i=0;i<52;i++){
            if(c[i]){
                sub[0]=ch(i);
                sub[1]=0;
                printsubset(i,1);
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/TAMING/p/9115891.html