﻿/*
    Adottak az n és k pozitív egész számok. Írjuk ki az {1,2,...,n}
    halmaz k-ad rendű variációit!
*/
#include <iostream>
#include <fstream>
using namespace std;

ofstream kimenet("kimenet.txt");


void kiir(int megoldas[], int k)
{
    for (int i = 1; i <= k; i++) {
        kimenet << megoldas[i] << " ";
    }
    kimenet << endl;
}


void variaciok(int szint, int k, int n, int megoldas[])
{
    if (szint > k) {
        kiir(megoldas, k);
    }
    else {
        for (int i = 1; i <= n; i++) {
            // i-t csak akkor használhatjuk, ha még nem
            // jelenik meg az éppen épülő megoldásban
            bool volt_mar = false;
            for (int j = 1; j < szint; j++) {
                if (megoldas[j] == i)
                    volt_mar = true;
            }

            if (!volt_mar) {
                megoldas[szint] = i;
                variaciok(szint+1, k, n, megoldas);
            }
        }
    }
}


int main()
{
    int n;
    cout << "n = ";
    cin >> n;

    int k;
    cout << "k = ";
    cin >> k;

    int megoldas[100];
    variaciok(1, k, n, megoldas);

    cout << "done" << endl;
    return 0;
}
