10098uva快速生成有序排列

来源:互联网 发布:穿古着做噩梦的淘宝店 编辑:程序博客网 时间:2024/06/06 05:48
#include<algorithm>using namespace std;#include<stdio.h>#include<string.h>char str[20];char sorted[20];void permutation(int n,char* org,char* aft,int cur);int main(){//freopen("input.txt","r",stdin);int numcase;scanf("%d",&numcase);while(numcase--){scanf("%s",str);sort(str,str+strlen(str));permutation(strlen(str),str,sorted,0);putchar('\n');}}void permutation(int n,char* org,char* aft,int cur){if(cur==n){aft[cur]='\0';puts(aft);return;}for(int i = 0; i < n ;i++){if(i&&org[i]==org[i-1]) continue;int cnt1,cnt2;cnt1=cnt2=0;for(int j = 0; j < cur;j++)if(aft[j]==org[i]) cnt1++;for(int j = 0; j < n;j++)if(org[j]==org[i]) cnt2++;if(cnt1<cnt2){aft[cur]=org[i];permutation(n,org,aft,cur+1);}}}

0 0