Pagini recente » Cod sursa (job #175327) | Cod sursa (job #234989) | Cod sursa (job #2714085) | Cod sursa (job #2452387) | Cod sursa (job #2450930)
#include <fstream>
std::ifstream fin("permutari.in");
std::ofstream fout("permutari.out");
unsigned short p[9], N;
void next_permutation()
{
unsigned short pozitie = N - 1;
while(p[pozitie] > p[pozitie + 1])
{
pozitie--;
}
for(unsigned short i = 1; i <= (N - pozitie)/2; i++)
{
p[pozitie + i] ^= (p[N - i + 1] ^= (p[pozitie + i] ^= p[N - i + 1]));
}
for(unsigned short i = pozitie + 1; i <= N; i++)
{
if(p[pozitie] < p[i])
{
p[pozitie] ^= (p[i] ^= (p[pozitie] ^= p[i]));
break;
}
}
}
int main()
{
fin >> N;
for(unsigned short i = 1; i <= N; i++) p[i] = i;
size_t fact = 1; for(unsigned short i = 1; i <= N; i++) fact *= i;
while(fact)
{
for(unsigned short i = 1; i <= N; i++) fout << p[i] << ' ';
fout << '\n';
next_permutation();
fact--;
}
}