Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("scrabble.in");
- ofstream fout("scrabble.out");
- int n, x[20];
- char cuv[20][3], voc[]="AEIOU", cons[]="BCDFGHJKLMNPQRSTVWXYZ";
- char s[20], smax[20];
- int OK(int k)
- {
- if(k>1)
- {
- if(strchr(voc,cuv[x[k]][0]) && strchr(voc,cuv[x[k-1]][1]))
- return 0;
- if(strchr(cons,cuv[x[k]][0]) && strchr(cons,cuv[x[k-1]][1]))
- return 0;
- if(cuv[x[k]][0]==cuv[x[k-1]][1])
- return 0;
- }
- for(int i=1;i<k;++i)
- {
- if(strcmp(cuv[x[k]],cuv[x[i]])==0)
- return 0;
- }
- return 1;
- }
- void back(int k)
- {
- for(int i=1; i<=n; ++i)
- {
- x[k]=i;
- if(OK(k))
- if(k>2 && k<=10)
- {
- strcpy(s,cuv[x[1]]);
- for(int j=2;j<=k;j++)
- strcat(s,cuv[x[j]]);
- s[2*k]='\0';
- if(strcmp(s,smax)>0)
- strcpy(smax,s);
- s[0]='\0';
- }
- else
- back(k+1);
- }
- }
- int main()
- {
- int i, j;
- fin>>n;
- fin.get();
- for(i=1;i<=n;i++)
- fin>>cuv[i];
- for(i=1;i<n;i++)
- for(j=i+1;j<=n;j++)
- if(strcmp(cuv[i],cuv[j])>0)
- swap(cuv[i],cuv[j]);
- back(1);
- fout<<smax;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement