Cod sursa(job #1011022)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 16 octombrie 2013 08:44:54
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
//
//  main.cpp
//  permutari
//
//  Created by Catalina Brinza on 10/16/13.
//  Copyright (c) 2013 Catalina Brinza. All rights reserved.
//

#include <cstdlib>
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;
 ofstream g("permutari.out");
bool valid(vector <int> v)
{
    bool val=true;
    for(int i=0; i<v.size(); i++)
        for(int k=i+1; k<v.size(); k++)
            if (v[i]==v[k]) val=false;
    return val;
}


void write (vector <int> v)
{
  
    for(int k=0; k<v.size(); k++)
        g<<v[k]<<" ";
    g<<endl;
}

void generate_permutations(int n)
{
    vector <int> vec;
    for(int i=1; i<=n; i++)
    {
        vec.push_back(i);
        int k=1;
        while(k>1)
        {
            vec.push_back(k);
            if(!valid(vec))
            {
                vec.pop_back(); k++;}
            else
            {
                if(vec.size()==n)
                {
                    write(vec);
                    vec.pop_back();
                    k--;
                }
                else
                {
                    if(vec[k]<n)
                    {
                        vec[k]++;
                        k++;
                    }
                    else
                    {
                        vec.pop_back();
                        k--;
                    }
                }
            }
            
        }
        vec.clear();
    }
}


int main()
{
    int n;
    ifstream f("permutari.in");
    f>>n;
    generate_permutations(n);
    return 0;
    g.close();
    f.close();
}