👤

Pentru Pbinfo.ro
#3149. Se citește un cuvânt format din cel puțin două și cel mult zece caractere litere mici distincte care conține cel puțin două vocale. Afișați în ordine lexicografică anagramele cuvântului citit care au proprietatea că încep și se termină cu o vocală.


#3154. Se citește de la tastatură un cuvânt s format din cel mult 11 litere mici distincte. Să se genereze în ordine alfabetică și să se afișeze toate anagramele cuvântului s în care vocalele sunt puncte fixe.


#3155. Se citește de la tastatură un cuvânt s format din cel mult 11 litere mici distincte. Să se genereze în ordine alfabetică și să se afișeze toate anagramele cuvântului s în care consoanele sunt puncte fixe.



Va rog mult daca are cineva aceste probleme cu backtracking cu solutie de 100p.


Răspuns :

Răspuns:

#include <iostream>

#include <cstring>

using namespace std;

int st[20], n, i, j;

char s[20], aux, v[10]="aeiou";

void afisare(int k)

{

   int i;

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

       cout<<s[st[i]];

   cout<<endl;

}

int valid(int k)

{

   int ev,i;

   ev=1;

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

       if(st[k]==st[i])

           ev=0;

   if(k==1||k==n)

   {if(strchr(v,s[st[k]])==0)

      ev=0;}

   return ev;

}

void back(int k)

{

   int i;

   for(i=0;i<=n-1;i++)

   {

       st[k]=i;

       if(valid(k))

           if(k==n)

           afisare(k);

       else

           back(k+1);

   }

}

int main()

{

   cin>>s;

   n=strlen(s);

   for(i=0;i<=n-2;i++)

       for(j=i+1;j<=n-1;j++)

       if(s[i]>s[j])

       {

       aux=s[i];

   s[i]=s[j];

   s[j]=aux;

}

back(1);

return 0;}

Explicație:

Aici ai o rezolvare de 80 de puncte pe care am facut -o in clasa cu profesorul de info. El a zis ca nu se stie la ce functie de ordonare a cuvintelor  s-a gandit autorul problemei incat sa dispara limita de timp depasita.

P.S:Daca cumva gasesti niste variabile  in plus, sunt de la alta  problema, nu te incurca cu nimic.

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari