uva 10098

来源:互联网 发布:网络谣言产生的原因 编辑:程序博客网 时间:2024/06/01 07:44
#include <iostream>#include <cstdio>#include <string>#include <algorithm>using namespace std;string s;char A[15];int n;void print_permutation(int cur, int len, string &s){    if(cur == len){        for(int i = 0; i < len; ++i)            printf("%c", A[i]);        printf("\n");    }    else{        for(int i = 0; i < len; ++i){   // 尝试将s[i]加入到A[cur]中;            if(!i || s[i] != s[i - 1]){                int c1 = 0, c2 = 0;                for(int j = 0; j < cur; ++j) if(A[j] == s[i]) c1++; //统计在A数组中目前s[i]出现的次数;                for(int j = 0; j < len; ++j) if(s[j] == s[i]) c2++; //统计在s中s[i]出现的次数;                if(c1 < c2){                    A[cur] = s[i];                    print_permutation(cur + 1, len, s);                }            }        }    }}int main(){    while(cin >> n){        for(int i = 0; i < n; ++i){            cin >> s;            int len = s.size();            sort(s.begin(), s.end());            print_permutation(0, len, s);            printf("\n");        }    }}

0 0
原创粉丝点击