码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 620

时间:2016-08-17 22:34:23      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

UVA 620

题意:

= =看了挺久的题
大概是问一个细胞链现在是什么状态。= =

SIMPLE 由一个空的在右边加一个A (每种细胞链都由‘A‘开始生长)
FULLY-GROWN 一个不是空原细胞链右边加AB
MUTAGENIC 不是空的细胞链左边加B,右边加A
MUTANT 其他的情况

解题:

从字符串两端开始搜索,每种情况都搜索一遍,如果三种情况都不能找到,那么就是其他情况了。
如果最后(l==r)了并且字符是‘A‘ (也就是能够回到最原始的状态)符合就可以输出辣~

#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int maxn = 1010;
const int INF = 0x3f3f3f3f;

char s[maxn];

int dfs(int l, int r)
{
    if(l == r && s[l] == A) return 1;
    if( s[r-1] == A && s[r] == B ) {
        if (dfs(l, r-2)) return 2;
    }
    if(s[l] == B && s[r] == A) {
        if (dfs (l+1, r-1)) return 3;
    }
    else return 0;
}
int main()
{
   // freopen("in.txt","r",stdin);
   // freopen("out.txt","w",stdout);
    int t;
    scanf ("%d", &t);
    while (t -- ) {
        scanf ("%s", s);
        int len = strlen(s) - 1;
        int ans = dfs(0, len);
        switch(ans) {
            case 1: cout << "SIMPLE\n"; break;
            case 2: cout << "FULLY-GROWN\n"; break;
            case 3: cout << "MUTAGENIC\n"; break;
            default : cout << "MUTANT\n"; break;
        }
    }
    return 0;
}

 

UVA 620

标签:

原文地址:http://www.cnblogs.com/ember/p/5781988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!