Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- void recurse(int);
- int map[1001];
- int x;
- char permut[1001];
- char a[1001];
- int c=0,len;
- int check[200]={0};
- int prev=-1;
- bool compare(char a,char b)
- {
- if(check[a]>=check[b]) return 0;
- else return 1;
- }
- int main()
- {
- int mark=1,i;
- for(i=65;i<=90;i++)
- {
- check[i]=mark;
- mark+=2;
- }
- mark=2;
- for(i=97;i<=122;i++)
- {
- check[i]=mark;
- mark+=2;
- }
- while(scanf("%s%d",a,&x)==2)
- {
- prev=-1;
- c=0;
- len=strlen(a);
- for(i=0;i<=len+2;i++)
- map[i]=0;
- sort(a,a+len,compare);
- recurse(0);
- }
- }
- void recurse(int source)
- {
- int i;
- int cmap[200]={0};
- if(c==x)
- {
- for(i=0;i<c;i++)
- printf("%c",permut[i]);
- puts("");
- }
- for(i=prev+1;i<len;i++)
- {
- if(map[i]==0 && cmap[a[i]]==0)
- {
- cmap[a[i]]=1;
- prev=i;
- permut[c++]=a[i];
- map[i]=1;
- recurse(i);
- map[i]=0;
- c--;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement