Rezolvare completă PbInfo #3152 combinari2

Cerința

Se citesc două numere naturale n și m. Afișați în ordine lexicografică toate submulțimile cu m elemente ale mulțimii {1, 2, ..., n} în care nu există două elemente pare alăturate.

Date de intrare

Programul citește de la tastatură numerele n și m.

Date de ieșire

Programul va afișa pe ecran submulțimile cerute, câte una pe fiecare rand și având elementele separate prin câte un spaţiu.

Restricții și precizări

  • 1 ≤ m < n ≤ 20

Exemplu

Intrare

5 3

Ieșire

1 2 3 
1 2 5 
1 3 4 
1 3 5 
1 4 5 
2 3 4 
2 3 5 
3 4 5 

Explicație

Numrele 2 și 4 nu apar pe poziții alăturate.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema combinari2:

#include <iostream>
using namespace std;

int n;///cardinalul multimii
int m;///cate se iau
int X[21];///solutia

void afisare()
{///afisarea solutiei
    for(int i=1;i<=m;i++)
        cout<<X[i]<<" ";
    cout<<"\n";
}

void back(int k)
{
    for(int i=X[k-1]+1;i<=n;i++)
    { ///incep de la elementul anterior +1
        X[k]=i;///il pun in solutie
        if(k==1 || X[k]%2+X[k-1]%2!=0) ///sa nu fie 2 pare alaturate
        {
            if(k==m)///am pus m => solutie
                afisare();
            else back(k+1);///trec la pasul urmator
        }
    }

}

int main()
{
    cin>>n>>m;
    back(1);
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3152 combinari2

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3152 combinari2 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!