zoukankan      html  css  js  c++  java
  • UVA 620

    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
    "; break;
                case 2: cout << "FULLY-GROWN
    "; break;
                case 3: cout << "MUTAGENIC
    "; break;
                default : cout << "MUTANT
    "; break;
            }
        }
        return 0;
    }
  • 相关阅读:
    Codeforces Round #461 (Div. 2)B-Magic Forest+位运算或优雅的暴力
    动态规划:树形DP
    动态规划:划分DP
    动态规划:状压DP
    图论:树的直径
    图论:点分治
    图论:2-SAT
    数据结构&图论:K短路-可持久化可并堆
    图论:次短路
    图论:曼哈顿距离最小生成树
  • 原文地址:https://www.cnblogs.com/ember/p/5781988.html
Copyright © 2011-2022 走看看