Cod sursa(job #2241617)

Utilizator Dragos123Tatar Dragos Vlad Dragos123 Data 16 septembrie 2018 14:47:10
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <iostream>

std::ifstream fin ("submultimi.in");
std::ofstream fout ("submultimi.out");

const int MaxN = 17;
int n, a[MaxN];

void Write(int poz);
bool Ok(int pos);
void Back_Track(int pos);

int main ()
{
    fin >> n;
    Back_Track(1);
    return 0;
}

void Write(int pos)
{
    for (int i = 1; i <= pos; ++i)
        fout << a[i] << ' ';
    fout << '\n';
}

bool Ok(int pos)
{
    if(pos > n)
        return false;

    for (int i = 1; i <= pos - 1; ++i)
        if (a[pos] == a[i])
            return false;
    return true;
}

void Back_Track(int pos)
{
    for (int i = a[pos - 1] + 1; i <= n; ++i)
    {
        a[pos] = i;
        if (Ok(pos))
        {
            Write(pos);
            Back_Track(pos + 1);
        }
    }
}