Advertisement
a53

permrep

a53
Oct 3rd, 2017
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <fstream>
  2. #include <cstring>
  3. #include <algorithm>
  4. #define NMax 20
  5. using namespace std;
  6. ifstream f("permrep.in");
  7. ofstream g("permrep.out");
  8. int n,nr[NMax],s[NMax],uz[NMax],p,N,F[27]; /// uz[i]=numarul curent de aparitii ale valorii i in sirul s
  9. char cuvant[NMax],Lit[27];
  10.  
  11. void gen(int k)
  12. {
  13. int i;
  14. if(k==p+1) /// Solutia este completa
  15. {
  16. for(i=1;i<=p;++i)
  17. g<<Lit[s[i]];
  18. g<<'\n';
  19. }
  20. else /// Continuam generarea
  21. for(i=1;i<=n;++i)
  22. if(uz[i]<nr[i]) /// Numarul curent de aparitii ale valorii i este mai mic decat multiplicitatea lui i
  23. s[k]=i,++uz[i],gen(k+1),--uz[i];
  24. }
  25.  
  26. int main()
  27. {
  28. f>>cuvant;
  29. f.close();
  30. n=strlen(cuvant);
  31. for(int i=0;i<=n;++i)
  32. ++F[cuvant[i]-'a'];
  33. for(int i=0;i<26;++i)
  34. if(F[i])
  35. Lit[++N]=i+'a',nr[N]=F[i];
  36. for(int i=1;i<=N;++i)
  37. p+=nr[i];
  38. gen(1);
  39. g.close();
  40. return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement