Wątek przeniesiony 2018-02-25 18:40 z Inne języki programowania przez Patryk27.

Wypisanie wszystkich kombinacji od 1 do n

0

Mam problem, musze wypisać wszystkie kombinacje od 1 do n. Mój program dziala za wolno, pomóżcie.

#include<iostream>
using namespace std;
int n,k;
int tab[60];
void kombinacje( int element, int max_w_elemencie)
{
    if(tab[element] >= max_w_elemencie)
    {
        kombinacje(element-1, max_w_elemencie-1);
    }
    else
    {
        for(int i = 1; i<=k; i++)
        {
            cout << tab[i] << " ";
        }
        cout <<endl;
        if(element == 0)
        {
            return;
        }
        tab[element]++;
        for(int i = element+1; i<=k; i++)
        {
            tab[i] = tab[i-1]+1;
        }
        kombinacje(k,n);
        return;
    }
}

int main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    cin >> n >> k;
    if(n == k)
    {
        for(int i = 1; i<=n; i++)
        {
            cout << i << " ";
        }
    }
    else if(k == 1)
    {
        for(int i = 1; i<=n; i++)
        {
            cout << i << endl;
        }
    }
    else
    {
        for(int i = 1; i<=n; i++)
        {
            tab[i]=i;
        }
        kombinacje(k,n);
    }
}
0

Co działa za wolno konkretniej?

Liczba kombinacji wynosi n!, zatem rośnie całkiem szybko ;-)

0
Patryk27 napisał(a):

Co działa za wolno konkretniej?

Liczba kombinacji wynosi n!, zatem rośnie całkiem szybko ;-)

max k i n to 50, a cza sprogramu nie moze przekroczyć 8 sec.

0

Co to znaczy wszystkie kombinacje od jeden do n, ilu elementowe kombinacje. Może chodzi Ci o permutacje? To przecież życia nie starczy, żeby 50! razy wypisać coś na ekran. Podaj coś więcej, może oryginalne zadanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1