zoukankan      html  css  js  c++  java
  • codeforces 653B B. Bear and Compressing(dfs)

    题目链接:

    B. Bear and Compressing

     

    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Limak is a little polar bear. Polar bears hate long strings and thus they like to compress them. You should also know that Limak is so young that he knows only first six letters of the English alphabet: 'a', 'b', 'c', 'd', 'e' and 'f'.

    You are given a set of q possible operations. Limak can perform them in any order, any operation may be applied any number of times. The i-th operation is described by a string ai of length two and a string bi of length one. No two of q possible operations have the same string ai.

    When Limak has a string s he can perform the i-th operation on s if the first two letters of s match a two-letter string ai. Performing the i-th operation removes first two letters of s and inserts there a string bi. See the notes section for further clarification.

    You may note that performing an operation decreases the length of a string s exactly by 1. Also, for some sets of operations there may be a string that cannot be compressed any further, because the first two letters don't match any ai.

    Limak wants to start with a string of length n and perform n - 1 operations to finally get a one-letter string "a". In how many ways can he choose the starting string to be able to get "a"? Remember that Limak can use only letters he knows.

    Input

    The first line contains two integers n and q (2 ≤ n ≤ 6, 1 ≤ q ≤ 36) — the length of the initial string and the number of available operations.

    The next q lines describe the possible operations. The i-th of them contains two strings ai and bi (|ai| = 2, |bi| = 1). It's guaranteed thatai ≠ aj for i ≠ j and that all ai and bi consist of only first six lowercase English letters.

    Output

    Print the number of strings of length n that Limak will be able to transform to string "a" by applying only operations given in the input.

    Examples
    input
    3 5
    ab a
    cc c
    ca a
    ee c
    ff d
    output
    4
    input
    2 8
    af e
    dc d
    cc f
    bc b
    da b
    eb a
    bb b
    ff c
    output
    1
    input
    6 2
    bb a
    ba a
    output
    0
    Note

    In the first sample, we count initial strings of length 3 from which Limak can get a required string "a". There are 4 such strings: "abb", "cab", "cca", "eea". The first one Limak can compress using operation 1 two times (changing "ab" to a single "a"). The first operation would change "abb" to "ab" and the second operation would change "ab" to "a".

    Other three strings may be compressed as follows:

    • "cab"  "ab"  "a"
    • "cca"  "ca"  "a"
    • "eea"  "ca"  "a"

    In the second sample, the only correct initial string is "eb" because it can be immediately compressed to "a".

    题意:给一对string,前面两个字符匹配的话可以吧前边2个字符去掉换成这对string后面一个字符,问最后能得到a的长度为n的字符串有多少个;

    思路:从a往前找,反过来操作;

    AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    int a[8],n,q,ans=0;
    char s[40][7];
    int dfs(char x,int num)
    {
        if(num>=n-1){ans+=a[x-'a'];return 0;}
        for(int i=0;i<q;i++)
        {
           if(s[i][4]==x)
           {
               char y=s[i][1];
                dfs(y,num+1);
           }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&q);
        for(int i=0;i<q;i++)
        {
            scanf("%s",s[i]+1);
            scanf("%s",s[i]+4);
            a[s[i][4]-'a']++;
        }
        dfs('a',1);
        cout<<ans<<endl;
    
        return 0;
    }
  • 相关阅读:
    野生的男人,家养的猪
    能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗?
    ios开发怎样才能做到代码和界面彻底分离,方便换肤?
    如何解决iOS6、iOS7 3.5寸和4.0寸屏的适配问题?不要写两个xib文件
    哪些听起来很牛逼的互联网理念!
    iOS 使用宏 常量 报错 expected expression
    ios测试宏指令出错:“Expected identefier”
    某个 页面覆盖了 UITabBar 的tabItem的解决办法
    ios(包括6、7)应用程序引用系统通讯录的方法 [亲测可行]
    ios 获得通讯录中联系人的所有属性 亲测,可行 兼容io6 和 ios 7
  • 原文地址:https://www.cnblogs.com/zhangchengc919/p/5296650.html
Copyright © 2011-2022 走看看