UVA_620
话说真的不知道为什么这道题目会放在动规的分类里,只要递归判断就可以了。如果存在多个状态的话,要输出细胞成长最后一个的状态。
#include<stdio.h>
#include<string.h>
#define MAXD 100010
int N, max;
char b[MAXD];
void dfs(int s, int t, int flag)
{
if(s == t)
{
if(b[s] == 'A')
{
if(flag)
max = 1, flag = 0;
}
else
max = 0;
}
else if(t - s >= 2)
{
if(b[t] == 'B' && b[t - 1] == 'A')
{
if(flag)
max = 2, flag = 0;
dfs(s, t - 2, flag);
}
else if(b[s] == 'B' && b[t] == 'A')
{
if(flag)
max = 3, flag = 0;
dfs(s + 1, t - 1, flag);
}
else
max = 0;
}
else
max = 0;
}
void solve()
{
int s, t;
scanf("%s", b);
max = 0;
s = 0, t = strlen(b) - 1;
dfs(s, t, 1);
if(max == 0)
printf("MUTANT\n");
else if(max == 1)
printf("SIMPLE\n");
else if(max == 2)
printf("FULLY-GROWN\n");
else
printf("MUTAGENIC\n");
}
int main()
{
while(scanf("%d", &N) == 1)
{
for(int i = 0; i < N; i ++)
solve();
}
return 0;
}