Pagini recente » Cod sursa (job #202563) | Cod sursa (job #363550) | Cod sursa (job #2147941) | Cod sursa (job #1372151) | Cod sursa (job #2647879)
#include <cstdio>
using namespace std;
int main() {
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
int n, last = 0;
scanf("%d", &n);
int perms[n+2];
bool inside[n+2];
int used[n+2];
for(int i=0; i<=n+1; ++i)
perms[i] = used[i] = inside[i] = 0;
inside[0] = 1;
while(last >= 0) {
if (last == n) {
for(int i=1; i<=n; ++i)
printf("%d ", perms[i]);
printf("\n");
inside[perms[last]] = false;
used[last] = 0;
--last;
} else {
while(inside[used[last]] && used[last] <=n)
++used[last];
if (used[last] > n) {
inside[perms[last]] = false;
used[last] = 0;
--last;
} else {
perms[last+1] = used[last];
inside[used[last]] = true;
++used[last];
++last;
}
}
}
return 0;
}