Cod sursa(job #2085080)

Utilizator NesteazyNastasia Alexandru Nesteazy Data 9 decembrie 2017 17:54:32
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<fstream>
using namespace std;
int n;
ifstream fin("permutari.in");
ofstream fout("permutari.out");

void afisare(int a[11])
{
	for(int i=1;i<=n;i++) fout<<a[i]<<' ';
	fout<<endl;
}
bool checksol(int a[11],int poz)
{
	for(int i=1;i<poz;i++)
	if(a[i]==a[poz]) return 0;
	return 1;
}
bool checksol2(int a[11],int poz,int x)
{
	for(int i=1;i<poz;i++)
	if(a[i]==x) return 0;
	return 1;
}



int findpsol(int a[11],int poz)
{
	for(int i=a[poz]+1;i<=n;i++)
		{
		if(checksol2(a,poz,i)) {
		 return i;}}
	return 0;
}
void build(int a[11])
{
	for(int i=1;i<=n;i++)
		if(a[i]==0) a[i]=findpsol(a,i);
	
}



int main()
{
	fin>>n;int a[11]={0};
	for(int i=1;i<=n;i++) a[i]=i;
	int k=n-1;
	afisare(a);
linie:	while(k!=0)
	{
		
		a[k+1]=0;
		a[k]=findpsol(a,k);
		if(a[k]==0) k--;
		else
		{
		build(a);
		afisare(a);k=n-1;}
		
		
	}
	
	
		
}