Sunteți pe pagina 1din 8

Enuntul problemei 

Se dau mărgele de 5 culori: alb, roşu, verde, albastru, negru. Numărul mărgelelor de fiecare
culoare se consideră nelimitat. Scrieți un program C++ care să afişeze toate colierele de n <15
mărgele care se pot forma, respectând următoarele condiţii:

- nu poate fi plasată o mărgea verde lângă o mărgea albastră;

- nu pot fi plasate mărgele vecine de aceeaşi culoare;

- numărul mărgelelor roşii nu poate depăşi o treime din numărul total de mărgele din colier

Rezultatele se scriu în fișierul colier.txt.Acesta va contine pe ultimul rand numărul colierelor


generate.

Rezolvare :
#include <iostream>

#include <fstream>

#include <cstring>

using namespace std;

int n,x[50],nrsol;

char a[20][20];

ofstream g("colier.txt");

void tipar(int k)

for (int i=1; i<=k; i++)

g<<a[x[i]]<<" ";

g<<endl;

}
int numaratoare(int k)

int nr=0;

if (x[k]==2)

nr++;

return nr;

int cont (int k)

if (k>1)

{if ((x[k]==3 && x[k-1]==4) || (x[k]==4 && x[k-1]==3))

return 0;

if (x[k]==x[k-1])

return 0;

if (numaratoare(x[k])>n/3)

return 0;

return 1;

void backtr(int k)

for (int i=1; i<=5; i++)

x[k]=i;
if (cont (k)==1)

if (k==n)

nrsol++;

tipar(k);

else

backtr(k+1);

int main()

cout<<"n=";

cin>>n;

nrsol=0;

strcpy(a[1],"alb");

strcpy(a[2],"rosu");

strcpy(a[3],"verde");

strcpy(a[4],"albastru");

strcpy(a[5],"negru");

backtr(1);

g<<nrsol;

return 0;

Fisierul pentru :
a)n=3
alb rosu alb

alb rosu verde

alb rosu albastru

alb rosu negru

alb verde alb

alb verde rosu

alb verde negru

alb albastru alb

alb albastru rosu

alb albastru negru

alb negru alb

alb negru rosu

alb negru verde

alb negru albastru

rosu alb rosu

rosu alb verde

rosu alb albastru

rosu alb negru

rosu verde alb

rosu verde rosu

rosu verde negru

rosu albastru alb

rosu albastru rosu

rosu albastru negru

rosu negru alb

rosu negru rosu

rosu negru verde

rosu negru albastru

verde alb rosu


verde alb verde

verde alb albastru

verde alb negru

verde rosu alb

verde rosu verde

verde rosu albastru

verde rosu negru

verde negru alb

verde negru rosu

verde negru verde

verde negru albastru

albastru alb rosu

albastru alb verde

albastru alb albastru

albastru alb negru

albastru rosu alb

albastru rosu verde

albastru rosu albastru

albastru rosu negru

albastru negru alb

albastru negru rosu

albastru negru verde

albastru negru albastru

negru alb rosu

negru alb verde

negru alb albastru

negru alb negru

negru rosu alb

negru rosu verde


negru rosu albastru

negru rosu negru

negru verde alb

negru verde rosu

negru verde negru

negru albastru alb

negru albastru rosu

negru albastru negru

R : 66

b)n=5

alb rosu alb rosu alb

alb rosu alb rosu verde

alb rosu alb rosu albastru

alb rosu alb rosu negru

alb rosu alb verde alb

alb rosu alb verde rosu

alb rosu alb verde negru

alb rosu alb albastru alb

alb rosu alb albastru rosu

alb rosu alb albastru negru

alb rosu alb negru alb

alb rosu alb negru rosu

alb rosu alb negru verde

alb rosu alb negru albastru

alb rosu verde alb rosu

alb rosu verde alb verde

alb rosu verde alb albastru

alb rosu verde alb negru


alb rosu verde rosu alb

alb rosu verde rosu verde

alb rosu verde rosu albastru

alb rosu verde rosu negru

alb rosu verde negru alb

alb rosu verde negru rosu

verde negru verde alb negru

verde negru verde rosu alb

verde negru verde rosu verde

verde negru verde rosu albastru

verde negru verde rosu negru

verde negru verde negru alb

verde negru verde negru rosu

verde negru verde negru verde

verde negru verde negru albastru

verde negru albastru alb rosu

[…]

negru albastru rosu albastru negru

negru albastru rosu negru alb

negru albastru rosu negru rosu

negru albastru rosu negru verde

negru albastru rosu negru albastru

negru albastru negru alb rosu

negru albastru negru alb verde

negru albastru negru alb albastru

negru albastru negru alb negru

negru albastru negru rosu alb

negru albastru negru rosu verde

negru albastru negru rosu albastru


negru albastru negru rosu negru

negru albastru negru verde alb

negru albastru negru verde rosu

negru albastru negru verde negru

negru albastru negru albastru alb

negru albastru negru albastru rosu

negru albastru negru albastru negru

876

c)n=9

R :154704 de modalitati

S-ar putea să vă placă și