Cod sursa(job #1974479)

Utilizator thinkphpAdrian Statescu thinkphp Data 27 aprilie 2017 19:46:47
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>

using namespace std;

ifstream f ("permutari.in");
ofstream g ("permutari.out");

int stack[100],
    n;

void bt(int);
void init(int);
int successor(int);
int valid(int);
int solution(int);
void print();

int main() {

    f>>n;
    bt(1);  

    return(0);
};

void bt(int level) {

     init(level);

     while(successor(level))

           if(valid(level)) 

              if(solution(level)) print();

                             else bt(level+1);


};

void init(int level) {

     stack[ level ] = 0;
};

int successor(int level) {

    if(stack[level] < n) {

       stack[level] = stack[level] + 1;

       return 1;

    } else {

       return 0;
    }    
};

int valid(int level) {

    int i;

    for(i = 1; i < level; i++) {

        if(stack[i] == stack[level]) return 0;
    } 

    return 1; 
};

int solution(int level) {

    return level == n;
};

void print() {

     int i;

     for(i = 1; i <= n; i++) g<<stack[i]<<" ";

     printf("\n");
};