Cod sursa(job #1526203)

Utilizator AcuasPopescu Nicolae-Aurelian Acuas Data 16 noiembrie 2015 00:21:21
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#include <cstring>
using namespace std;
class backtracking {
	public:
        backtracking(int ceva);
	private:
		int st[105];
		int n;
		void tipar(void);
		bool valid(int k);
		void back(int k);
};
backtracking :: backtracking(int ceva)  {
    n=ceva;
    back(1);
};
void backtracking::tipar(void) {
	for (int j = 1;j <= n;j++)
		printf("%d ", st[j]);
	printf("\n");
}
bool backtracking::valid(int k) {
	int j;
	for (j = 1;j < k;j++)
		if (st[k] == st[j])
			return 0;
	return 1;
}
void backtracking::back(int k)
{
	int i;
	for (int i = 1;i <= n;i++) {
		st[k] = i;
		if (valid(k))
			if (k == n)
				tipar();
			else
				back(k + 1);
	}
}

int main() {
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);
	int r;
	scanf("%d",&r);
	backtracking permutari(r);
}