Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cstring>
- using namespace std;
- ifstream f("scrabble.in");
- ofstream g("scrabble.out");
- int n,x[20],folosit[20];
- char cuv[20][3],voc[]="AEIOU";
- char s[20],smax[20];
- int OK(int k)
- {
- unsigned L=strlen(s);
- if((strchr(voc,cuv[k][0])&&strchr(voc,s[L-1]))||
- (!strchr(voc,cuv[k][0])&&!strchr(voc,s[L-1]))||
- (cuv[k][0]==s[L-1]))
- return 0;
- return 1;
- }
- void backr(int k)
- {
- if(k>n)
- {
- s[0]='\0';
- for(int i=1;i<=n;++i)
- if(OK(x[i]))
- strcat(s,cuv[x[i]]);
- g<<"S= "<<s<<' '<<endl;
- if(strcmp(s,smax)>=0)
- strcpy(smax,s);
- }
- else
- for(int i=1;i<=n;++i)
- {
- x[k]=i;
- if(!folosit[x[k]]) /// Daca elementul curent nu e deja folosit
- {
- folosit[x[k]]=1; /// Marcheaza-l ca folosit
- backr(k+1); /// Genereaza restul permutarii
- folosit[x[k]]=0; /// Demarcheaza elementul
- }
- }
- }
- int main()
- {
- f>>n;
- f.get();
- for(int i=1;i<=n;++i)
- f>>cuv[i];
- for(int i=1;i<n;++i)
- for(int j=i+1;j<=n;++j)
- if(strcmp(cuv[i],cuv[j])>0)
- swap(cuv[i],cuv[j]);
- backr(1);
- g<<smax;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement