Cod sursa(job #1990157)

Utilizator mirunafrancescaMiruna mirunafrancesca Data 10 iunie 2017 18:03:36
Problema Combinari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.5 kb
#include <iostream>
#include <stdio.h>
using namespace std;
/// Sa se afiseze toate combinarile si aranjamentele pt multimea formata cu elementele de la 0 la n.

int a[100], n, b[100], ap[100], p;

void creare(int v[], int &n)
{
    cin>>n;
    for(int i=0; i<n; i++)
        v[i]=i;
}

void afis(int v[], int l)
{
    for(int i=0; i<l; i++)
        cout<<v[i]+1<<" ";
    cout<<endl;
}

/*void bta(int k)
{
    if(k==p)
    {
        afis(b,p);
        return;
    }
    else
    {   for(int i=0; i<n; i++)
        {
            if(ap[i]==0)
            {
                b[k]=a[i];
                ap[i]++;
                bta(k+1);

            b[k]=0;
            ap[i]=0;
            }
        }
    }

}
*/
void btc(int k)
{
    if(k==p)
    {
        afis(b,p);

        return;
    }
    else
    {   for(int i=0; i<n; i++)
        {   if(k==0)b[k-1]=-1;
            if(b[k-1]<a[i])
            {
                b[k]=a[i];
                btc(k+1);

                b[k]=0;
            }
        }
    }

}

int main()
{
    freopen("combinari.in", "r", stdin);
    freopen("combinari.out", "w", stdout);
    creare(a,n);
    cin>>p;
    /*cout<<"A={0";
    for(int i=1; i<n; i++)
        cout<<", "<<i;
    cout<<"}"<<endl;

    cout<<"Aranjamentele de "<<n<<" luate cate "<<p<<" ale multimii A sunt:"<<endl;
    bta(0);
    cout<<"Combinarile de "<<n<<" luate cate "<<p<<" ale multimii A sunt:"<<endl;*/
    btc(0);




    return 0;
}