Advertisement
Guest User

scrabble_eu_10pct

a guest
Nov 22nd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. ifstream fin("scrabble.in");
  5. ofstream fout("scrabble.out");
  6. int n, x[20];
  7. char cuv[20][3], voc[]="AEIOU", cons[]="BCDFGHJKLMNPQRSTVWXYZ";
  8. char s[20], smax[20];
  9. int OK(int k)
  10. {
  11.     if(k>1)
  12.     {
  13.         if(strchr(voc,cuv[x[k]][0]) && strchr(voc,cuv[x[k-1]][1]))
  14.             return 0;
  15.         if(strchr(cons,cuv[x[k]][0]) && strchr(cons,cuv[x[k-1]][1]))
  16.             return 0;
  17.         if(cuv[x[k]][0]==cuv[x[k-1]][1])
  18.             return 0;
  19.     }
  20.     for(int i=1;i<k;++i)
  21.     {
  22.  
  23.         if(strcmp(cuv[x[k]],cuv[x[i]])==0)
  24.             return 0;
  25.     }
  26.     return 1;
  27. }
  28.  
  29. void back(int k)
  30. {
  31.     for(int i=1; i<=n; ++i)
  32.     {
  33.         x[k]=i;
  34.         if(OK(k))
  35.             if(k>2 && k<=10)
  36.             {
  37.                 strcpy(s,cuv[x[1]]);
  38.                 for(int j=2;j<=k;j++)
  39.                     strcat(s,cuv[x[j]]);
  40.                 s[2*k]='\0';
  41.                 if(strcmp(s,smax)>0)
  42.                     strcpy(smax,s);
  43.                 s[0]='\0';
  44.             }
  45.             else
  46.                 back(k+1);
  47.      }
  48. }
  49.  
  50. int main()
  51. {
  52.     int i, j;
  53.     fin>>n;
  54.     fin.get();
  55.     for(i=1;i<=n;i++)
  56.         fin>>cuv[i];
  57.     for(i=1;i<n;i++)
  58.         for(j=i+1;j<=n;j++)
  59.             if(strcmp(cuv[i],cuv[j])>0)
  60.                 swap(cuv[i],cuv[j]);
  61.     back(1);
  62.     fout<<smax;
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement