Cod sursa(job #1800353)

Utilizator dragosmdvMoldovan Dragos dragosmdv Data 7 noiembrie 2016 18:20:29
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");

int st[100], freq[1000], k,n;


int valid(int k){
    for(int i=1;i<k;i++)
        if(st[i]==st[k])

            return 0;
    return 1;
}

int solutie(int k){

    return (n+1==k);

}

void tipar(int k){

    for(int i=1;i<k;i++)
        fout<<st[i]<<" ";

    fout<<endl;
}


void bk(int k){
    if(solutie(k))
    {
        tipar(k);
        return;
    }
    for(int i=1;i<=n;i++){
       if(freq[i]==0){
        st[k]=i;
        freq[i]=1;
        bk(k+1);
        freq[i]=0;
}}}
void bk2(int k){

	if(solutie(k))
        {
		tipar(k);
		return;
	}
    for(int i=1;i<=n;i++){
	if(freq[i]==0)
	{
		st[k]=i;
            	freq[i] = 1;
          	bk(k+1);
		freq[i] = 0;
	}
    }
}
int main()
{
    fin>>n;
    bk2(1);

    return 0;
}