Pagini recente » Cod sursa (job #772798) | Cod sursa (job #3194849) | Cod sursa (job #334490) | Cod sursa (job #779714) | Cod sursa (job #743676)
Cod sursa(job #743676)
#include <fstream>
int main (void)
{
unsigned short n;
std::ifstream input("permutari.in");
input >> n;
input.close();
char *set(new char [n]);
unsigned char *perm(new unsigned char [n]), *generator(perm), *limit(perm + n);
{
unsigned char counter(0);
char s('1'), *it(set);
do
{
*generator = counter;
*it = s;
++it;
++generator;
++counter;
++s;
}
while (generator < limit);
}
unsigned char *it, *start(limit - 2), *end(limit - 1);
std::ofstream output("permutari.out");
while (true)
{
generator = perm;
do
{
output.put(set[*generator]);
++generator;
}
while (generator < limit);
output.put('\n');
generator = start;
while (generator >= perm && *generator > generator[1])
--generator;
if (generator < perm)
break;
it = end;
while (*it < *generator)
--it;
*generator ^= *it;
*it ^= *generator;
*generator ^= *it;
it = end;
++generator;
while (generator < it)
{
*generator ^= *it;
*it ^= *generator;
*generator ^= *it;
++generator;
--it;
}
}
output.close();
delete [ ] set;
delete [ ] perm;
return 0;
}