Sunteți pe pagina 1din 2

Pb.1.

Se citesc de la tastatură un cuvânt s format din litere mici distincte și un număr natural n.


Să se afișeze pe ecran toate cuvintele care se pot obține din s eliminând exact n litere.
Eliminarea se face începând cu literele de la sfârșitul cuvântului, iar ordinea din cuvânt a
literelor nu se schimbă (vezi explicația din exemplu).
Programul citește de la tastatură cuvântul s și numărul n.
Programul va afișa pe ecran pe rânduri separate cuvintele care se pot obține
din s eliminând exact n litere.

 Cuvântul s are cel mult 20 de litere


 Cuvântul s este format din litere mici distincte
 1 <= n < numărul de litere ale lui s

Exemplu
Intrare

dorel 2

Ieșire

dor – 1, 2, 3
doe – 1,2, 4
dol -1,2, 5
dre
drl
del
ore
orl
oel
rel - 3,4,5

-lungimea cuvantului (m) , n caractere eliminate  solutii formate din m-n elemente

-pb de generare a combinarilor ( elementele solutiei X sunt in ordine strict crescatoare) X[k] ? X[k-1]

-afisarea va scrie pe ecran cele m-n litere (asociate solutiei )


- dorel   1,2,3,4,5

//-lungimea cuvantului (m) , n caractere eliminate  solutii formate din m-n elemente

#include<iostream>
#include<cstring>
using namespace std;
int n,m, X[21];
char cuv[21];

int conditie(int k)
{return 1;}

int solutie (int k)


{if (k==m-n) return 1;
else return 0;
}

int afisare(int k)
{for (int i=1;i<=k;i++) cout<< cuv[X[i]-1];
cout<<endl;}

void back()
{int k=1;X[k]=0;
while (k>0)
{while (X[k]<m)
{X[k]++;
if (conditie(k)==1)
if (solutie(k)==1) afisare(k);
else {k++; X[k]=X[k-1];}
}
k--;}}

int main()
{cin>>cuv>>n;
m=strlen(cuv);
back();
return 0;}

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