uva620 - Cellular Structure

来源:互联网 发布:蓝韵网络 编辑:程序博客网 时间:2024/05/29 08:59

题意:
题目说的天花乱坠,结合样例,大概讲的是,给你一个串,有三种情况:
simple stage O = A
• fully-grown stage O = OAB
• mutagenic stage O = BOA
如果不是这三种情况就是MUTANT
(如A:为简单层,O即为A,
AAB:相当于OAB,O即为A或者AAB
BAABA:相当与BOA,O即为A或者AAB或者BAABA
依次类推…
)
思路:
这里的递推关系不难看出,分成三种情况看当前串能不能满足,只要是能满足,就会成为又一个O,依次类推…
代码如下:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 105;char str[N];int n;int DP(int i, int j) {    if (i == j && str[i] == 'A')        return  1;    else if (str[j] == 'B'&& str[j-1]=='A'&&j - i >= 2 && DP(i, j - 2))         return 2;    else if (str[i] == 'B'&&str[j] == 'A' && j-i>=2 && DP(i+1,j-1))        return 3;    return 0;}int main() {    scanf("%d", &n);    while (n--) {        scanf("%s", str);        int i = DP(0,strlen(str)-1);        if (i == 1)            printf("SIMPLE\n");        else if (i == 2)            printf("FULLY-GROWN\n");        else if (i == 3)            printf("MUTAGENIC\n");        else             printf("MUTANT\n");    }    return 0;}
0 0