Cod sursa(job #1503212)

Utilizator voillpalMihai Voinea voillpal Data 15 octombrie 2015 18:48:14
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <climits>
using namespace std;

bool isValid(int st[], int k) {
	for (int i = 1; i < k; i++) {
		if (st[i] == st[k]) {
			return false;
		}
	}
	return true;
}

void print(int st[], int n) {
	for (int i = 1; i <= n; i++) {
		cout << st[i] << " ";
	}
	cout << "\n";
}

int main() {
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);
	int n, k, st[30];
	cin >> n;
	k = 1;
	st[1] = 0;

	while (k > 0) {
		st[k]++;
		if (st[k] == n + 1) {
			k--;
		} else {
			if (isValid(st, k)) {
				k++;
				st[k] = 0;
			}
			if (k == n + 1) {
				print(st, n);
				k--;
			}
		}
	}

	return 0;
}