生成一个不属于任何给出字符串的子集的字典序最小的字符串(dfs,字符串匹配)
#include<bits/stdc++.h>
using namespace std;
char s[110][110],ans[110];
bool flag;
int n;
void dfs( int dep, int len )
{
if ( dep==len )
{
ans[len] = '\0';
bool f = true;
for ( int i=1 ; i<=n ; i++ )
if ( strstr( s[i], ans ) )
f = false;
if (f)
flag = true;
return;
}
for ( int i=0 ; i<26 ; i++ )
{
ans[dep] = i+'a';
dfs ( dep+1, len );
if ( flag )
return;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%s",s[i]);
flag=false;
for(int len=1;; len++)
{
if(flag)
break;
dfs(0,len);
}
printf("%s\n",ans);
}
return 0;
}