Status |
Accepted |
Time |
30ms |
Length |
1639 |
Lang |
C++11 5.3.0 |
Submitted |
2018-07-08 14:19:17 |
Shared |
|
RemoteRunId |
21564153 |
Select Code
#include<stdio.h>
#include<string.h>
#include<ctype.h>
using namespace std;
int n,max,map[26][26],visit[26];
char s[10],s1[10];
int dfs(int m)
{
int i,j,min;
if (m>=n)
{
min=0;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if ((map[s1[i]-'A'][s1[j]-'A']==1)&&(j-i>min))
min=j-i;
if (min<max)
{
max=min;
strcpy(s,s1);
}
if ((min==max)&&(strcmp(s,s1)>0))
strcpy(s,s1);
return 0;
}
for (i=0; i<26; i++)
if (visit[i]==1)
{
visit[i]=0;
s1[m]=i+'A';
dfs(m+1);
visit[i]=1;
}
}
int main()
{
char ch,CH;
int i,j;
while (scanf("%c",&ch)&&ch!='#')
{
memset(map,0,sizeof(map));
memset(visit,0,sizeof(visit));
while (scanf("%c",&CH)&&CH!='\n')
{
if (isalpha(CH))
{
map[ch-'A'][CH-'A']=1;
map[CH-'A'][ch-'A']=1;
visit[ch-'A']=1;
visit[CH-'A']=1;
}
if (CH==';')
scanf("%c",&ch);
}
n=0;
max=9999;
for (i=0; i<26; i++)
if (visit[i])
{
s[n]=i+'A';
++n;
}
s[n]='\0';
s1[n]='\0';
dfs(0);
for (i=0; s[i]!='\0'; i++)
printf("%c ",s[i]);
printf("-> %d\n",max);
}
return 0;
}