Cod sursa(job #2436418)
Utilizator | Data | 5 iulie 2019 17:53:35 | |
---|---|---|---|
Problema | Generare de permutari | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.62 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("permutari.in");
ofstream g("permutari.out");
const int N = 10;
int p[N],n;
bool urmatoareaPermutare();
int main()
{
f >> n;
for(int i=1;i<=n;i++)
p[i]=i;
do
{
for(int i=1;i<=n;i++)
g<<p[i]<<' ';
g<<'\n';
}
while(urmatoareaPermutare());
return 0;
}
bool urmatoareaPermutare()
{
int i=n,j=n;
while(i>0&&p[i]<p[i-1])i--;
if(i==1)
return false;
while(p[j]<p[i-1])j--;
swap(p[j],p[i-1]);
for(j=n;j>i;i++,j--)
swap(p[i],p[j]);
return true;
}