Pagini recente » Cod sursa (job #466076) | Cod sursa (job #61780) | Cod sursa (job #435464) | Cod sursa (job #3142091) | Cod sursa (job #797433)
Cod sursa(job #797433)
#include <fstream>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n, nv, uz[15];
char c[15], s[15];
struct vectoru
{
int nr;
char ch;
};
vectoru v[30];
inline void Read()
{
ifstream f("anag.in");
f>>c;
f.close();
}
inline void back(int k)
{
if (k == n)
printf("%s\n", s);
else
{
for(int i=1; i<=nv; i++)
{
if (uz[i] < v[i].nr)
{
uz[i]++;
s[k] = v[i].ch;
back(k+1);
uz[i]--;
}
}
}
}
inline void Solve()
{
n = strlen(c);
freopen("anag.out", "w", stdout);
int i, k;
for(i=0; i<n; i++)
{
v[c[i]-'a'+1].ch = c[i];
v[c[i]-'a'+1].nr++;
}
k=0;
for(i=1; i<=26; i++)
if (v[i].nr == 0)
k++;
else
v[i-k] = v[i];
nv = 26-k;
// for (i=1; i<=nv; i++)
// cout<<v[i].ch<<" "<<v[i].nr<<"\n";
// cout<<nv;
back(0);
}
int main()
{
Read();
Solve();
return 0;
}