Cod sursa(job #806664)

Utilizator paul.chPaul Chelarescu paul.ch Data 3 noiembrie 2012 11:39:26
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 3.39 kb
//#include<fstream>
//#include<iostream>
//#include<stack>
//#include<math.h>
//#include<windows.h>
//#include<stdio.h>
//#include <conio.h>
//#include<time.h>
//using namespace std;
//int n, v[100], c;
//bool unic;
////long long ;
////stack<int> s;
////string ;
//ifstream fin("perm.in");
//ofstream fout("perm.out");
//
//void scrie ( int p)
//{
//    for (int i = 1; i <= n; i++)
//    {
//        fout << v[i] << " ";
//    }
//    fout << endl;
//}
//
//bool p_e_final(int p)
//{
////    cout << "sa aplelat pefinal";
//    bool final = false;
//    if(p == n)
//    {
//        /*        cout << "cica p==n cu p si n == " << p << "  " << n << '\n';
//        */
//        final = true;
////        cout << "\np == n\n";
//    }
//    return final;
//}
//
//
//bool p_e_unic (int p)
//{
//    int i;
//    bool unic = true;
//    for (i = 1; i < p; i++)
//    {
//        if (v[i] == v[p]) unic = false;
//    }
//    return unic;
//}
//
//
//void back(int p)
//{
//    int i;
//    for ( i = 1; i <= n; i++)
//    {
//        v[p] = i;
//        int i;
//        unic = true;
//        for (i = 1; i < p; i++)
//        {
//            if (v[i] == v[p]) unic = false;
//        }
//        if (/*p_e_unic(p)*/ unic)
//        {
//            if(p == n)
//            {
//                //scrie(p);
//                /*cout << "\np e final, p=" << p << "  \n" ;*/
//                for (int i = 1; i <= n; i++)
//                {
//                    cout << v[i] << " ";
//                }
//                cout << endl;
//                c++;
//            }
//            else
//            {
//                /*cout << "\no facut back\n";*/
//                back(p + 1);
//            }
//        }
//    }
//}
//
//
//int main()
//{
//    /*    cout << "start\n";*/
//    n = 7;
//    back(1);
//    fout << endl << c;
//}






#include<fstream>
#include<iostream>
#include<stack>
#include<math.h>
#include<windows.h>
#include<stdio.h>
#include <conio.h>
#include<time.h>
using namespace std;
int n, v[100], vv[100] , f, asd, k, c;
bool unic;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void back(int p)
{
    //if (f <= vv[asd])
    {
        int i;
        for ( i = 1; i <= n; i++)
        {

            v[p] = i;
            int ii;
            unic = true;
            for (ii = 1; ii < p; ii++)
            {
                if (v[ii] == v[p]) unic = false;
            }
            if (unic)
            {
                if(p == n)
                {
                    f++;
                    //fout << "p==n\n" << f << " < f si v[asd] >" << vv[asd];
                    //if (f == vv[asd])
                    {
                        asd++;
                        for (int i = 1; i <= n; i++)
                        {
                            fout << v[i] << " ";
                        }
                        fout << endl;
                    }
                }
                else
                {
                    /*cout << "\no facut back\n";*/
                    back(p + 1);
                }
            }
        }
    }
}


int main()
{
    /*    cout << "start\n";*/
    //n = 7;
    //asd = 0;
    fin >> n /*>> k*/;
    /*for (int aa = 0; aa < k; aa++)
    {
        fin >> vv[aa];
    }*/
    back(1);
//fout << endl << c;
}