AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int C,num=0;
int n,a[55],f1[55][4],f2[55][6];
char s[55];
int OK(char x)
{
return x=='A'||x=='E'||x=='I'||x=='O'||x=='U';
}
void DP()
{
int i,j;
memset(f1,0,sizeof(f1));
memset(f2,0,sizeof(f2));
f1[0][0]=f2[0][0]=1;
for(i=1;i<=n;i++)
{
for(j=0;j<=2;j++) if(f1[i-1][j])
{
if(a[i]==2||a[i]==1) f2[i][1]=1;
if(a[i]==2||a[i]==0) f1[i][j+1]=1;
}
for(j=0;j<=4;j++) if(f2[i-1][j])
{
if(a[i]==2||a[i]==0) f1[i][1]=1;
if(a[i]==2||a[i]==1) f2[i][j+1]=1;
}
}
int bad=0,good=0;
for(i=0;i<=2;i++) if(f1[n][i]) good=1;
for(i=0;i<=4;i++) if(f2[n][i]) good=1;
for(i=1;i<=n;i++) if(f1[i][3]||f2[i][5]) bad=1;
if(good&&bad) puts("MIXED");
else if(good) puts("GOOD");
else puts("BAD");
}
int main()
{
for(scanf("%d",&C);C--;)
{
scanf("%s",s+1);
n=strlen(s+1);
int i;
for(i=1;i<=n;i++)
{
if(s[i]=='?') a[i]=2;
else if(OK(s[i])) a[i]=0;
else a[i]=1;
}
printf("Case %d: ",++num);
DP();
}
return 0;
}